0

我正在将 php 与 zend 框架和 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);

我不想更新过期时间。有没有办法在不更新过期时间的情况下更新缓存?

4

1 回答 1

1

首先 ZF1 的 Zend_Cache 将给定的生命周期存储为固定的过期时间。因此,您只需根据当前时间和过期时间计算当前生命周期:

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

PS:在 ZF2 中,您必须检查存储是否以当前时间、mtime 和给定 TTL(如文件系统)为基础或以存储的固定到期时间(如 memcache/apc)为基础检查过期。

于 2014-01-07T07:46:16.163 回答