бутстрап (производим кеш и скармливаем пагинатору)
Copy Source | Copy HTML
$backendOptions = array(
- 'servers' => array( array(
- 'host' => '127.0.0.1',
- 'port' => (APPLICATION_ENV == 'production') ? 12245 : 11211,
- 'persistent' => true,
- 'weight' => 1,
- 'timeout' => 10,
- 'retry_interval' => 15,
- 'status' => true,
- 'failure_callback' => null ) ) );
- $frontendOptions = array(
- 'lifetime' => 3600
- 'automatic_serialization' => true,
- 'caching' => (APPLICATION_ENV == 'production') ? true : true,
- 'cache_id_prefix' => 'dseyeUP_',
- 'ignore_user_abort' => true );
- $cache = Zend_Cache::factory(
- 'Core',
- 'Memcached',
- $frontendOptions,
- $backendOptions);
- Zend_Registry::set('upCoreMem', $cache);
- Zend_Paginator::setCache($cache);
контроллер
Copy Source | Copy HTML
$count = $this->_worlds->getPlayersCount($this->idW);
- $this->view->paginator = $paginator = $this->_players->listWorldPlayers($this->idW, $page, $count);
По всем мануалам всё должно работать, но нет:
во первых ZFDebug показывает лишний коннект к БД перед запросом данных пагинатора
во вторых этот запрос не кешируется никогда
Долго гуглил и копал сорцы, но как то безуспешно =(
Нашёл пару багов, где у людей файловый кеш пагинатора не работал при включенном профилировании через фаербаг, но показалось что проблема не та.
Версия 1.11.0, но и на продакшене 1.11.3 тоже самое.
Сам кеш разумеется работает нормально, без проблем подцепился к метаданным DbTable, да и ручками много где используется =)
Как временно решение прикрутил ручками кеширование этого запроса по составному ключу из параметров.
Комментариев нет:
Отправить комментарий