Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

Как лучше организовать кеширование
http://forum.kohanaframework.su/viewtopic.php?f=2&t=779
Страница 1 из 1

Автор:  mstdmstd [ 05 дек 2013, 18:24 ]
Заголовок сообщения:  Как лучше организовать кеширование

Всем привет,
Хочется сделать кеширование из 2х таблиц которые будут нечасто обновляться. В общем это таблицы с товарами импортируемые из другой системы.
Я представляю это себе так, что как только я записал данные в таблицы я устновлю значение в таблице настройки и оно будет считано

Код:
          $lifetime = 99999999999;   // Очень большой период жизни кеша
               $Goods_List_Name= 'Goods_List_Name';
          $RecreateCache= true; // Прочитали из базы

      if ( $RecreateCache ) {  // Если новые данные то читаем из базы и запишем в кеш
            $GoodsList = $ModelGood->getGoodsList( false, '', $filters_array, $sort, $sort_direction );
            Kohana::cache( $Goods_List_Name, $GoodsList , $lifetime );
      } else {  // Если новые старые то читаем их из кеша
         $GoodsList= Kohana::cache($Goods_List_Name);
                        if ( empty($GoodsList) ) {  // Если данных в кеше не нашли - то пересоздадим их
                      $GoodsList = $ModelGood->getGoodsList( false, '', $filters_array, $sort, $sort_direction );
                  Kohana::cache( $Goods_List_Name, $GoodsList , $lifetime );
                        }
      }

И проблема как раз с параметром $lifetime - похоже что он не так работает как я ожидал и что после 60 секунд кеш ВСЕГДА пересоздается

Я нашел в исходниках :
Код:
    * @param   string  $name       name of the cache
    * @param   mixed   $data       data to cache
    * @param   integer $lifetime   number of seconds the cache is valid for
    * @return  mixed    for getting
    * @return  boolean  for setting
    */
   public static function cache($name, $data = NULL, $lifetime = NULL)

Не пойму , что неправильно ?

Автор:  WinterSilence [ 05 дек 2013, 20:24 ]
Заголовок сообщения:  Re: Как лучше организовать кеширование

у тебя $RecreateCache всегда TRUE, поэтому значение никогда не читается из кеша.

Автор:  mstdmstd [ 06 дек 2013, 00:34 ]
Заголовок сообщения:  Re: Как лучше организовать кеширование

WinterSilence писал(а):
у тебя $RecreateCache всегда TRUE, поэтому значение никогда не читается из кеша.

RecreateCache - это был пример - я его менял на true/false - проблема не в нем.

Автор:  WinterSilence [ 06 дек 2013, 01:09 ]
Заголовок сообщения:  Re: Как лучше организовать кеширование

Kohana::$caching = TRUE?
Попробуй $lifetime = Date::DAY; т.к. число возможно выходит за допустимый диапазон
И вместо if ( empty($GoodsList) ) поставь if ($GoodsList === NULL) т.к. если твой метод возвращает пустой массив или не сериализуемый объект, то проверка проходит

Автор:  mstdmstd [ 06 дек 2013, 16:00 ]
Заголовок сообщения:  Re: Как лучше организовать кеширование

Строки
Код:
Kohana::$caching = TRUE;
Cache::$default = 'memcache'; 
пишу в конце /backend/bootstrap.php после

Код:
Kohana::modules(array(
   ...
   'cache'      => MODPATH.'cache',      // Caching with multiple backends
   ...
));

?

Так и сделал и вижу что кешированипе работает, но только в пределах 1 минуты...

Автор:  mstdmstd [ 06 дек 2013, 16:09 ]
Заголовок сообщения:  Re: Как лучше организовать кеширование

Нашел ссылку на эту тему http://brotkin.ru/tag/cache/ но там статье 4 года...
там вроде kohana 3

Автор:  WinterSilence [ 06 дек 2013, 16:16 ]
Заголовок сообщения:  Re: Как лучше организовать кеширование

Kohana::$caching задается в Kohana::init();

Kohana::cache() и модуль Cache между собой не связаны.

Страница 1 из 1 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/