Получение всех ключей в пространстве имен с помощью Zend Data Cache - PullRequest
2 голосов
/ 05 января 2012

С помощью Zend Data Cache - PHP API , есть ли способ получить все ключи в пространстве имен?

По сути, мне нужно повторить то, что вы можете сделать с apc_cache_info , например

$info = apc_cache_info("user");
$keys = array();

foreach ($info["cache_list"] as $entry) {
    $keys[] = $entry["info"];
}

Из документации не видно, возможно ли это.

Спасибо.

Ответы [ 2 ]

1 голос
/ 27 января 2012

Бэкэнд Zend File поддерживает getTags () и getIds ()

class Zend_Cache_Backend_File
{
    ....
    /**
     * Return an array of stored tags
     *
     * @return array array of stored tags (string)
     */
    public function getTags()
    {
        return $this->_get($this->_options['cache_dir'], 'tags', array());
    }
    /**
     * Return an array of stored tags
     *
     * @return array array of stored tags (string)
     */
    public function getTags()
    {
        return $this->_get($this->_options['cache_dir'], 'tags', array());
    }

В моем файле начальной загрузки я запускаю кеш

protected function _initCache()
{
    $frontendOptions = array(
        'lifetime' => 3600*24*5, // cache lifetime of 5 days
        'automatic_serialization' => true,
        'logging' => false,
        'caching' => true
    );

    $backendOptions = array(
        'cache_dir' => './../data/cache/', // Directory where to put the cache files
        'hashed_directory_level' => 2
    );

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

Тогда в моем контроллере я могу позвонить

public function indexAction()
{
    $cache = Zend_Registry::get('cache');
    Zend_Debug::dump($cache->getTags());
    Zend_Debug::dump($cache->getIds());

Предлагаем вам проверить код Zend для конкретного используемого кеша.

0 голосов
/ 11 сентября 2016

Сервер поддерживает Zend\Cache\Storage\Adapter\FilesystemIterator Интегратор:

$cache = $this->serviceLocator->get('yourFilesystemCacheHere');
$iterator = $cache->getIterator();
foreach($iterator as $key){
   echo $key;
}
...