0

Zendフレームワークとzend_cacheでphpを使用しています。私はこれのためのこれらのコード行を持っています:`

    $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 に答える