Решил поиграться с cache методом для AR.
Имеем метод модели seo
public function getBySection($section) {
$dependency = new CDbCacheDependency("SELECT last_update FROM seo WHERE section = '" . $section . "'");
return self::model()->cache(86400, $dependency)->find('section = :section', array(':section' => $section));
}
есть виджет в который я передаю $section, в итоге получаю следующее.
У меня на странице есть 5 виджетов, например ‘placeholder-1’ … ‘placeholder-5’
У меня во всех выводится только первая метка, при чем такое произошло после включения кэширования.
Смотрю в дэбагбар, а там почему-то вызывается вместо 5 разны регионов, 5 раз один и тот же
14:48:17.430126 trace system.db.CDbCommand Querying SQL: SELECT * FROM `seo` `t` WHERE section = :section LIMIT 1
14:48:17.430244 trace system.db.CDbCommand Querying SQL: SELECT last_update FROM seo WHERE section = 'front-menu-1'
14:48:17.430432 trace system.db.CDbCommand Query result found in cache
14:48:17.430771 trace system.db.ar.CActiveRecord seo.find()
14:48:17.430846 trace system.db.CDbCommand Querying SQL: SELECT * FROM `seo` `t` WHERE section = :section LIMIT 1
14:48:17.430938 trace system.db.CDbCommand Querying SQL: SELECT last_update FROM seo WHERE section = 'front-menu-1'
14:48:17.431122 trace system.db.CDbCommand Query result found in cache
14:48:17.431374 trace system.db.ar.CActiveRecord seo.find()
14:48:17.431468 trace system.db.CDbCommand Querying SQL: SELECT * FROM `seo` `t` WHERE section = :section LIMIT 1
14:48:17.431560 trace system.db.CDbCommand Querying SQL: SELECT last_update FROM seo WHERE section = 'front-menu-1'
14:48:17.431730 trace system.db.CDbCommand Query result found in cache
14:48:17.431989 trace system.db.ar.CActiveRecord seo.find()
14:48:17.432065 trace system.db.CDbCommand Querying SQL: SELECT * FROM `seo` `t` WHERE section = :section LIMIT 1
14:48:17.432183 trace system.db.CDbCommand Querying SQL: SELECT last_update FROM seo WHERE section = 'front-menu-1'
14:48:17.432333 trace system.db.CDbCommand Query result found in cache
14:48:17.432593 trace system.db.ar.CActiveRecord seo.find()
14:48:17.432686 trace system.db.CDbCommand Querying SQL: SELECT * FROM `seo` `t` WHERE section = :section LIMIT 1
14:48:17.432775 trace system.db.CDbCommand Querying SQL: SELECT last_update FROM seo WHERE section = 'front-menu-1'
14:48:17.432924 trace system.db.CDbCommand Query result found in cache
14:48:17.433192 trace system.db.ar.CActiveRecord seo.find()
***************************************************
14:48:17.430423 trace system.caching.CFileCache Serving "yii:dbquerymysql:dbname=usb;host=localhost:usb:SELECT * FROM `seo` `t` WHERE section = :section LIMIT 1:a:0:{}" from cache
14:48:17.431097 trace system.caching.CFileCache Serving "yii:dbquerymysql:dbname=usb;host=localhost:usb:SELECT * FROM `seo` `t` WHERE section = :section LIMIT 1:a:0:{}" from cache
14:48:17.431720 trace system.caching.CFileCache Serving "yii:dbquerymysql:dbname=usb;host=localhost:usb:SELECT * FROM `seo` `t` WHERE section = :section LIMIT 1:a:0:{}" from cache
14:48:17.432322 trace system.caching.CFileCache Serving "yii:dbquerymysql:dbname=usb;host=localhost:usb:SELECT * FROM `seo` `t` WHERE section = :section LIMIT 1:a:0:{}" from cache
14:48:17.432915 trace system.caching.CFileCache Serving "yii:dbquerymysql:dbname=usb;host=localhost:usb:SELECT * FROM `seo` `t` WHERE section = :section LIMIT 1:a:0:{}" from cache
14:48:17.433499 trace system.caching.CFileCache Serving "yii:dbquerymysql:dbname=usb;host=localhost:usb:SELECT * FROM `seo` `t` WHERE section = :section LIMIT 1:a:0:{}" from cache
14:48:17.434087 trace system.caching.CFileCache Serving "yii:dbquerymysql:dbname=usb;host=localhost:usb:SELECT * FROM `seo` `t` WHERE section = :section LIMIT 1:a:0:{}" from cache
Это я не вкурил как работает кэш или где-то закралась ошибка ?
Потому что кэш таки работает, но везде использует только один ключ