3
私はZend_Cacheを使ってWebサービスから生成されたデータをキャッシュしています。しかし、Webサービスが応答しない場合は、古い情報を表示し、空白を残さないようにします。Zend_Cache - 期限切れのデータを取得しますか?
文書によると、答えはZend_Cache_Core::load()
に2つ目の引数を渡すことです:
@param boolean $doNotTestCacheValidity If set to true, the cache validity won't be tested
しかし、私は期限切れのキャッシュコンテンツのbool(false)
を返し、常にこれをやったすべてのテストのために。
期限が切れても、Zend_Cacheが指定されたキャッシュキーのキャッシュデータを強制的に返す方法はありますか?
$cache_key = md5($url);
if ($out = $cache->load($cache_key)) {
return $out;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
if ($output) {
// Process...
$cn_cache->save($out, $cache_key);
} else {
// The query has timed out/web service not responded
// We need to load the outdated cached content... but the following DOES NOT work
return $cache->load($cache_key, true);
// var_dump($cache->load($cache_key, true)); # false
}
無効なキャッシュエントリが、それは「掃除」されていないことを、まだそこにありますか?覚えておいて、デフォルトの 'automatic_cleaning_factor'は10です。つまり、各キャッシュ書き込みで無効なキャッシュエントリが削除される可能性が10分の1になります。ちょうどspitballing ... –
@DavidWeinraub私はファイルがキャッシュディレクトリにまだ存在していることを確認しましたが、ファイルが変更されたかどうかはチェックしませんでした(ファイルを削除すると削除フラグがセットされていますか? – PeterB