使用通配符清除 apcu
Clearing apcu with a wild card
是否可以使用通配符清除 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 缓存一起使用 类
我相信你应该按照描述的那样尝试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) );
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/'));
是否可以使用通配符清除 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 缓存一起使用 类
我相信你应该按照描述的那样尝试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) );
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/'));