2012-01-05 4 views
2

С помощью Zend Data Cache - PHP API существует ли метод для извлечения всех ключей в пространстве имен?Получение всех ключей в пространстве имен с Zend Data Cache

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

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

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

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

Спасибо.

ответ

1

Зенд Файл Backend поддерживает 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

у вас есть getTags() дважды здесь, что делает getIds() выглядят, как и в чем разница между ними? –

+0

неважно, я понял, для тех, кого это интересует, вы можете увидеть полный исходный код для этого класса: 'http://www.tig12.net/downloads/apidocs/zf/Cache/Backend/ File.php.source.html' –

+0

человек, это бесполезно, и я потратил столько времени, пытаясь понять это))). просто придерживайтесь apc –

0

Бэкэнд поддерживает Zend\Cache\Storage\Adapter\FilesystemIterator Interator:

$cache = $this->serviceLocator->get('yourFilesystemCacheHere'); 
$iterator = $cache->getIterator(); 
foreach($iterator as $key){ 
    echo $key; 
} 
Смежные вопросы