gpt4 book ai didi

zend-framework - Zend_db 缓存

转载 作者:行者123 更新时间:2023-12-04 04:32:44 29 4
gpt4 key购买 nike

有没有办法在 Zend_db 中缓存结果集?例如,我想使用 Zend_db 运行一个选择查询,并希望这个查询被缓存以便以后能够更快地运行它。

最佳答案

我的建议是在 Bootstrap.php 中创建一个带有前缀“_init”的初始化方法。例如:

/**
*
* @return Zend_Cache_Manager
*/
public function _initCache()
{
$cacheManager = new Zend_Cache_Manager();
$frontendOptions = array(
'lifetime' => 7200, // cache lifetime of 2 hours
'automatic_serialization' => true
);
$backendOptions = array(
'cache_dir' => APPLICATION_PATH . '/cache/zend_cache'
);
$coreCache = Zend_Cache::factory(
'Core',
'File',
$frontendOptions,
$backendOptions
);
$cacheManager->setCache('coreCache', $coreCache);
$pageCache = Zend_Cache::factory(
'Page',
'File',
$frontendOptions,
$backendOptions
);
$cacheManager->setCache('pageCache', $pageCache);

Zend_Registry::set('cacheMan', $cacheManager);
return $cacheManager;
}

通过这种方式,您已经创建并注入(inject)了您的缓存管理器,其中包含您在应用程序中需要的缓存。
现在你可以在你想使用的地方使用这个缓存对象了。
例如,在您的 Controller 或其他地方:
/**
*
* @return boolean |SimplePie
*/
public function getDayPosts()
{
$cacheManager = Zend_Registry::get('cacheMan');
$cache = $cacheManager->getCache('coreCache');
$cacheID = 'getDayPosts';

if (false === ($blog = $cache->load($cacheID))) {
$blog = Blog::find(array('order' => 'rand()', 'limit' => 1));
$cache->save($blog, $cacheID);
}
// do what you want to do with the daya you fetched.
}

关于zend-framework - Zend_db 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9144883/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com