Я пытаюсь кэшировать результаты запроса, который будет меняться не очень часто, если вообще будет.В моем классе у меня есть закрытая переменная класса private $_cache
, и в конструкторе я инициализирую ее так же, как и большую часть своего кэширования:
// Setup caching
$frontendOptions = array('lifeTime' => (strtotime('+1 week') - time()));
$backendOptions = array('cache_dir' => '../application/cache');
$this->_cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions);
Позже, в функции, я пытаюсь кэшировать результаты запроса:
$cache_id = 'all_station_results';
if ( ($results = $this->_cache->load($cache_id)) === false )
{
// Get all data from stations table
$sql="SELECT * FROM locations";
$sth = $this->_db->query($sql);
// Serialize query results
$data = serialize($sth);
// Write to cache
$this->_cache->save($data, $cache_id);
}
else
{
// Return results from cache
return unserialize($results);
}
Это вызывает исключение:
Вы не можете сериализовать или десериализовать экземпляры PDOStatement
Поэтому я попытался без сериализации и получаю это исключениеброшено:
Данные должны быть строковыми или заданы automatic_serialization = true
Очевидно, что PDOStatement не является строкой, и я не вижу разницы между настройками automatic_serialization = true
и ручная сериализация.
Как я могу кешировать этот объект PDOStatement?