У меня есть объект SettingsSiteTable со следующим методом для чтения настроек в базе данных и хранения результатов в кеше.CakePHP 3: Не уверен Почему кеш :: read() не работает
// GET ALL CONFIG SETTINGS
function getConfigs(){
if(($settings_site = Cache::read($this->key)) === false) {
$settings_site = $this->find('list', [
'keyField' => 'key',
'valueField' => 'value'
])->toArray();
Cache::write($this->key, $settings_site, 'settings');
}
return $settings_site;
} // END GET CONFIGS FUNCTION
$ this-> key является 'SettingsSite', и, похоже, с этим не возникает никаких проблем. Я также добавил использование Cake \ Cache \ Cache в файл объекта таблицы.
Мой кэш конфигурации в app.php файл выглядит следующим образом:
'Cache' => [
'default' => [
'className' => 'File',
'path' => CACHE,
],
'settings' => [
'className' => 'File',
'duration' => '+6 hours',
'path' => CACHE . 'settings/',
],
'_cake_core_' => [
// ...
],
'_cake_model_' => [
// ...
],
],
Кэш, как представляется, успешно сохранить. Я могу просмотреть файл кэша, расположенный в TMP/кэш/Настройки/settings_site (не уверен, что расширение файла)
Однако, если изменить данные в базе данных и обновить страницу, обновленная информация отображается, что означает, что он неправильно считывает кеш и повторно запрашивает результаты.
Что я делаю неправильно? Я получил этот код непосредственно из 3.X Cookbook: Writing to a Cache
Поэтому я думаю, что это имеет какое-то отношение к лицу, которое я кэширую набор результатов после того, как запрос уже выполнен ... Я думаю, что я на что-то. За исключением теперь я получаю сообщение об ошибке «Вы не можете сериализовать или unserialize экземпляры PDO» ... все еще нуждаетесь в помощи – bowlerae
ОК СЕЙЧАС Я думаю, что это связано с тем, что я не указываю конфигурацию в Cache :: read(), поэтому он использует значение по умолчанию, но я пишу 'settings' – bowlerae