Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 28 мар 2024, 19:36

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: 05 дек 2013, 18:24 
Не в сети
Бывалый

Зарегистрирован: 30 июл 2013, 15:31
Сообщения: 47
Всем привет,
Хочется сделать кеширование из 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)

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 дек 2013, 20:24 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
у тебя $RecreateCache всегда TRUE, поэтому значение никогда не читается из кеша.

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 дек 2013, 00:34 
Не в сети
Бывалый

Зарегистрирован: 30 июл 2013, 15:31
Сообщения: 47
WinterSilence писал(а):
у тебя $RecreateCache всегда TRUE, поэтому значение никогда не читается из кеша.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 дек 2013, 01:09 
Не в сети
Бывалый
Аватара пользователя

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

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 дек 2013, 16:00 
Не в сети
Бывалый

Зарегистрирован: 30 июл 2013, 15:31
Сообщения: 47
Строки
Код:
Kohana::$caching = TRUE;
Cache::$default = 'memcache'; 
пишу в конце /backend/bootstrap.php после

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

?

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 дек 2013, 16:09 
Не в сети
Бывалый

Зарегистрирован: 30 июл 2013, 15:31
Сообщения: 47
Нашел ссылку на эту тему http://brotkin.ru/tag/cache/ но там статье 4 года...
там вроде kohana 3


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 дек 2013, 16:16 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
Kohana::$caching задается в Kohana::init();

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

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group