Zend_Cache缓存文件消失

我有一个zend缓存,它存储来自db的数组。缓存可以读取&更新很好。但实际缓存文件似乎在一天左右后消失。我认为添加
automatic_cleaning_factor = 0
会解决这个问题,但事实并非如此。
$frontendOptions = array(
    'caching' => true,
    'cache_id_prefix' => 'mysite_blah',
    'lifetime' => 14400, # 4 hours
    'automatic_serialization' => true,
    'automatic_cleaning_factor' => 0,
);
$backendOptions = array(
    'cache_dir' => "{$_SERVER['DOCUMENT_ROOT']}/../../cache/zend_cache/"
);
$cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions);

if(!$result = $cache->load('test_blah'))
{
    // run SQL
    ...    
    $cache->save($my_array_from_db, 'test_blah');
}
else
{
     $result = $cache->load('test_blah');
}
使用此缓存的页面不是很受欢迎,不确定是否与它有任何关系.....任何想法?     
已邀请:
我无法解释为什么你的文件正在消失,我认为你的样本中可能缺少可能删除缓存文件的东西。不过,我可以提供一些可能对你有帮助的笔记...... 我认为你错误地解释了
automatic_cleaning_factor
参数。这不会禁用缓存过期。这只会禁用缓存前端,以便在调用
save()
方法时自动清除可能已过期的缓存。 当你cache4你的缓存时,它仍然会被测试有效性,如果无效,它会被忽略,你的数据库将被查询新数据。你可以在
load()
上传递
true
作为第二个参数来忽略有效性测试。 但是你应该把你的
lifetime
设置为很长时间,而不是覆盖缓存验证,因为它有一个原因。 此外,此代码可以简化:
if(!$result = $cache->load('test_blah')) {
    // run SQL
    ...    
    $cache->save($my_array_from_db, 'test_blah');
} else {
     $result = $cache->load('test_blah');
}
至:
if(!$result = $cache->load('test_blah')) {
    // run SQL
    ...   
    $result = $my_array_from_db;
    $cache->save($result, 'test_blah');
}
不需要
else
,因为缓存中的
$result
if()
语句中分配。     

要回复问题请先登录注册