Кэширование запросов Yii с бесконечным временем истечения

Я использую кеширование запросов с бесконечным временем истечения. Рассмотрим фрагмент кода ниже, например:

$channels  = Channels::model()->cache(0)->findAll(array('order' => 'channel_name'));

Этот оператор должен делать в записи в кеше, и он делает, но он не извлекает данные из кеша, скорее он напрямую отправляется в БД для получения результата.

Хотя, если я предоставлю время истечения> 0 (ноль), то все будет работать гладко. Например:

    $channels  = Channels::model()->cache(20)->findAll(array('order' => 'channel_name'));

отлично работает в течение 20 секунд и извлекает результаты из кеша.

Мы подтвердили это, так как включили журнал и увидели профилирование.

Бесконечное время истечения работает также хорошо для кэширования пары ключ / значение, используя Yii::app()->cache->set() или же Yii::app()->cache->get()

Есть идеи, если я делаю что-то не так?

Благодарю.

2

Решение

Согласно документам 0 означает, что кеш отключен.

Просто установите для него какое-то большое значение. Если вам это нужно во многих местах, определите его как константу, чтобы избежать путаницы магическое число антипаттерн, то есть:

define('IMMUTABLE_CACHE', 60 * 60 * 24 * 365 * 100);

$channels  = Channels::model()->cache(IMMUTABLE_CACHE);
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]