获取Zend-Cache中的所有缓存密钥

时间:2017-07-24 02:29:21

标签: php zend-framework zend-framework2 zend-framework3 zend-cache

这是我的缓存初始化代码:

use Zend\Cache\StorageFactory;
$cache   = StorageFactory::factory(array(
                    'adapter' => array(
                            'name'    => 'filesystem',
                            // With a namespace we can indicate the same type of items
                            // -> So we can simple use the db id as cache key
                            'options' => array(
                                    'namespace' => 'dbtable',
                                    'cache_dir' => Pluto::path('cache')
                            ),
                    ),
                    'plugins' => array(
                            // Don't throw exceptions on cache errors
                            'exception_handler' => array(
                                    'throw_exceptions' => false
                            ),
                            // We store database rows on filesystem so we need to serialize them
                            'Serializer'
                    )
            ));

我想知道的是如何获取此缓存对象中的所有缓存键

例如,现在执行此代码:

$cache->setItem('key1','foo');

$cache->setItem('key2','bar');

$cache->setItem('key3','baz');

在不同的区域/点执行此代码:

$cache->setItem('key4','foo2');

$cache->setItem('key5','bar2');

$cache->setItem('key6','baz2');

我喜欢一个包含['key1','key2','key3','key4','key5','key6']的数组,这个数组会从缓存对象中的所有键的内部数组(包括在此特定请求期间未受影响的那些键)中预先出现

1 个答案:

答案 0 :(得分:0)

AFAIK,zend-cache没有方法可以检索缓存对象中的所有密钥。但是如果你想要检索所有键,你可以迭代对象。它不是array,但如果您愿意,可以将其设为array

$caches = $cache->getIterator();
$cacheKeys = []
foreach ($caches as $key) {
    // $key is the cache key
    $cacheKeys[] = $key;
}

print_r($cacheKeys);