3

Zend_Cache を使用して、Web サービスから生成されたデータをキャッシュしています。ただし、Web サービスが応答しない場合に、古い情報を表示し、空白を残さないようにしたい。

ドキュメントによると、答えは に 2 番目の引数を渡すことZend_Cache_Core::load()です。

@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
}
4

1 に答える 1