Я использую Zend Framework и Zend_Paginator с Doctrine 2 и DoctrineExtensions Paginate Adapter.

Мне нужно кэшировать мой результат, однако я не знаю, где мне это сделать.

Мне кажется логичным делать это в Репозитории, но я пробовал, и с адаптером пагинатора не получается.

Как бы вы пошли?

2
Trent 16 Дек 2011 в 21:09

1 ответ

Ознакомьтесь с Zend_Cache. Существует несколько различных адаптеров, включая файловые, базы данных и memcached, но общий способ их обработки таков:

$frontendOptions = array(
   'lifetime' => 7200, // cache lifetime of 2 hours
   'automatic_serialization' => true
);

$backendOptions = array(
    'cache_dir' => './tmp/' // Directory where to put the cache files
);

// getting a Zend_Cache_Core object
$cache = Zend_Cache::factory('Core',
                             'File',
                             $frontendOptions,
                             $backendOptions);

if( ($result = $cache->load('myresult')) === false ) {
  // fetch $result
  $cache->save($result, 'myresult');
}

$result не является кешированной переменной.

0
Stephen Fuhry 19 Янв 2012 в 21:54
Привет, я бы хотел, чтобы это работало, поскольку результат оборачивает экземпляр PDO, мы не можем сделать это напрямую из экземпляра Doctrine или Paginator.
 – 
Trent
20 Янв 2012 в 23:07