Время абсолютного истечения zend_cache

Я использую php с zend framework и zend_cache. У меня есть следующие строки кода:

$frontendOptions = array ('lifetime' => 12 * 3600, 'automatic_serialization' => true );
 $backendOptions = array ('cache_dir' => APPLICATION_PATH . '/../tmp');
 $cache = Zend_Cache::factory ( 'Core', 'File', $frontendOptions, $backendOptions );

 $CacheName = ('CACHE_NAME');
 $CacheResult = $cache->load ( $CacheName );
 if($CacheResult==false)
 echo 'no cache or chache is expired';
 else 
 var_dump($CacheResult);'

Проблема в том, что когда я использую функцию сохранения, как это:

$cache->save($data,$CacheName);

Я не хочу, чтобы время истечения срока действия обновлялось. Есть ли способ обновить кеш без обновления его срока действия?

1 ответ

Прежде всего Zend_Cache из ZF1 сохраняет заданное время жизни как фиксированное время истечения. Поэтому вам нужно только вычислить текущее время жизни в базе текущего времени и времени истечения:

$lifetime = $expirationTime - time();
if ($lifetime > 0) {
 $cache->save($data, $id, $tags, $lifetime);
}

PS: В ZF2 вам нужно проверить, проверяет ли хранилище истечение в базе текущего времени, времени mtime и заданного TTL (например, файловой системы) или в базе фиксированного времени истечения срока хранения (например, memcache/apc).

licensed under cc by-sa 3.0 with attribution.