Zend_Cache_Frontend_Function, не работает - PullRequest
1 голос
/ 11 декабря 2011

Я пытаюсь использовать Zend_Cache_Frontend_Function для кеширования некоторых моих собственных вызовов функций.

Кеш настроен так:

$manager = new Zend_Cache_Manager();

$frontendOptions = array(
   'lifetime' => intval(CACHELIFETIME),
   'automatic_serialization' => true);

$backendOptions = array('cache_dir' => CACHEDIR);

$funcCache = Zend_Cache::factory('Function',
'File',
$frontendOptions,
$backendOptions);

$manager->setCache('function', $funcCache);

Затем я использую кеш так:

$country_name = "UK";
$country_id = 1;

$country = new Default_Db_Table_Country();
$country = $cache->call(array($country, "getCountryByName"), array($country_name, $id));

Даже после многократного вызова этой функции функция getCountryByName() все еще вызывается и в ней выполняется запрос к базе данных.

Правильно ли я использую это?Как я могу остановить вызов getCountryByName(), происходящий несколько раз?

Спасибо

Редактировать:

Глядя на источник, кажется, что call() использует буферизацию вывода, если это так, то мои функции ничего не выводят, они только возвращают объекты.Таким образом, делая Zend_Cache_Frontend_Function бесполезным в этом случае?

1 Ответ

1 голос
/ 11 декабря 2011

Казалось бы, Zend_Cache_Frontend_Class - это путь, а не Function.Мне нужно установить класс перед каждым вызовом, чтобы убедиться, что используется правильный объект;

$country = new Default_Db_Table_Country();
$cache->setCachedEntity($country);
$country = $cache->getCountryByName($country_name, $id);

Этот интерфейс выполняет кеширование объектов, массивов и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...