使用外卡清除apcu

时间:2015-05-18 20:46:29

标签: php symfony apc

是否可以使用通配符清除apcu缓存?

例如,我可能有一堆缓存键:

products_fooandbars product_1_foo

users_fooandbars user_1_foo user_1_bar

user_2_foo user_2_bar

有没有办法清除用户1喜欢的所有内容 user_1_ *或清除所有用户,例如此用户_ *

我正在使用Symfony和doctrine apc缓存类

2 个答案:

答案 0 :(得分:3)

我相信你应该按照http://php.net/manual/en/function.apc-delete.php#101794

的描述进行尝试
// delete all keys beginning with a regex match on MY_APC_TESTA
$toDelete = new APCIterator('user', '/^MY_KEY/', APC_ITER_VALUE);

var_dump( apc_delete($toDelete) ); 

答案 1 :(得分:1)

OP指的是APCu而不是 APC 功能名称等方面没有太大区别,但是对于任何人来说,明确 APC 是旧版本, APCu 是最好的新的,实现更好。

旧的APC实现了操作码缓存和用户对象缓存。 APCu仅实现用户对象缓存。对于操作码缓存,您可以使用其他东西,例如Zend OPcache。 也就是说,这是来自@Evgenly的更新版本:

// delete all keys beginning with a regex match
foreach(new APCUIterator('/^MY_KEY/') as $apcu_cache){
    echo 'key: ' . $apcu_cache['key'] . PHP_EOL;
    echo 'val: ' . $apcu_cache['value'];
    apcu_delete($apcu_cache['key']); 
}

foreach是说明性的,您也可以这样做:

apcu_delete(new APCUIterator('/^MY_KEY/'));