To clarify "FALSE on failure", apc_delete on a key that does not exist will return FALSE; in other words, it's not just a test to see if APC works.
(PECL apc >= 3.0.0)
apc_delete — 格納されている変数をキャッシュから取り除く
成功した場合に TRUE
を、失敗した場合に FALSE
を返します。
例1 apc_delete() の例
<?php
$bar = 'BAR';
apc_store('foo', $bar);
apc_delete('foo');
// もちろん、このような使い方は無意味
?>
To clarify "FALSE on failure", apc_delete on a key that does not exist will return FALSE; in other words, it's not just a test to see if APC works.
Contrary to what's documented here - apc_delete also accepts and array of keys or even an APCIterator object, making batch operations a breeze (tested in version 3.1.3p1):
<?php
function showCache() {
$cachedKeys = new APCIterator('user', '/^MY_APC/', APC_ITER_VALUE);
echo "\nkeys in cache\n-------------\n";
foreach ($cachedKeys AS $key => $value) {
echo $key . "\n";
}
echo "-------------\n";
}
apc_add('MY_APC_TESTA_1','1');
apc_add('MY_APC_TESTA_2','2');
apc_add('MY_APC_TESTA_3','3');
apc_add('MY_APC_TESTB_4','4');
apc_add('MY_APC_TESTB_5','5');
apc_add('MY_APC_TESTB_6','6');
showCache();
/* outputs:
keys in cache
-------------
MY_APC_TESTB_4
MY_APC_TESTB_5
MY_APC_TESTB_6
MY_APC_TESTA_1
MY_APC_TESTA_2
MY_APC_TESTA_3
-------------
*/
// delete all keys beginning with a regex match on MY_APC_TESTA
$toDelete = new APCIterator('user', '/^MY_APC_TESTA/', APC_ITER_VALUE);
var_dump( apc_delete($toDelete) );
// returns boolean true|false on success or failure
showCache();
/* outputs:
boolean true
keys in cache
-------------
MY_APC_TESTB_4
MY_APC_TESTB_5
MY_APC_TESTB_6
-------------
*/
// explicitly delete an array of keys
var_dump( apc_delete( array('MY_APC_TESTB_4','MY_APC_TESTB_5','MY_APC_NOT_EXISTS')) );
// returns an array of keys that where not found/removed from the cache
showCache();
/* outputs:
array
0 => string 'MY_APC_NOT_EXISTS' (length=17)
keys in cache
-------------
MY_APC_TESTB_6
-------------
*/
// delete a single key
var_dump( apc_delete('MY_APC_TESTB_6') );
// returns boolean true|false on success or failure
showCache();
/* outputs:
boolean true
keys in cache
-------------
-------------
*/
?>
To clear out the whole APC user cache:
<?php
$info = apc_cache_info("user");
foreach ($info['cache_list'] as $obj) {
apc_delete($obj['info']);
print 'Deleted: ' . $obj['info'] . PHP_EOL;
}
?>