@buboon
Php developer

Как узнать кэшируется ли запрос в Yii 1 (memcached)?

Подключил memcache в конфиге, на машине всё настроено и включено (dll и сам сервис запущен)
Как можно узнать действительно ли кешируются запросы?
Залез в фреймворк, нашел такую штуку CDbCommand 495 строка
if(($result=$cache->get($cacheKey))!==false)
			{                         
				Yii::trace('Query result found in cache','system.db.CDbCommand');
				return $result[0];
			}

Результат всегда в условии false, т.е. в него программа не заходит никогда. Правильно ли я понимаю, что кеширование не срабатывает?
Вот сам запрос на котором тестирую:
$result = Yii::app()->db->cache(600)->createCommand('SELECT COUNT(*) as count FROM wo_users')->queryRow();
  • Вопрос задан
  • 2863 просмотра
Пригласить эксперта
Ответы на вопрос 1
можно проверить статистику memcached из коммандной строки. вот ссылочка.
1. Очищаем кеш.
2. Смотрим пустой ли кеш - кеш должен быть пустым
3. Кешируем ТОЛЬКО один запрос.
4. Делаем этот запрос
5. Смотрим пустой ли кеш - кеш не должен быть пустым
Условие ставится ставится для того, чтобы проверить, есть ли данные в кеше по такому-то ключику. Если они есть, то данные берутся с кеша. Если их нет, то их нужно туда положить и вернуть данные. Перед тем, как кеш использовать, нужно описать его как модуль в конфиге. Проверить работает ли сам кеш можно проверить напрямую без кеширования запросов, а кешированием просто данных:
$dataCacheKey = 'data_key';
if($data = Yii::app()->cache->get($dataCacheKey)){
    echo 'Data cached';
}else{
    $data = 'asd';
    Yii::app()->cache->add($dataCacheKey, $data);
}

return $data;
// навскидку как-то так

можно использовать CDummyCache для того, чтобы писать код под кеширующие ф-ии, но при этом никакого кешированя нет. Такой себе кеш-пустышка, который типа и кеширует, но он ничего и не кеширует, но предоставляет полный интерфейс для кеширования. Потом в конфиге можно просто изменить класс, который будет это все дело кешировать и ничего по коду изменять не надо будет. Читайте ман по кешированию в Yii
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы