Я использую Zend_Cache для кэширования данных, созданных с помощью веб-службы. Однако, если веб-служба не отвечает, я хочу отобразить устаревшую информацию и не оставлять пустое место.Zend_Cache - получить истекшие данные?
Согласно документации, ответ должен пройти второй аргумент 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
}
Вы уверены, что запись недействительна кэш все еще существует, что она не может быть «очищены»? Помните, что по умолчанию 'automatic_cleaning_factor' равен 10, что означает вероятность« 1-в-10 »недействительных записей кэша, удаляемых при каждой записи кеша. Просто spitballing ... –
@DavidWeinraub Я проверил файлы, все еще существовавшие в каталоге кеша, однако я не проверял, были ли файлы изменены (есть ли флаг удаления или удаление файла?), И он сделает это. – PeterB