CakeFest 2024: The Official CakePHP Conference

Memcache::delete

(PECL memcache >= 0.2.0)

Memcache::deleteサーバーから項目を削除する

説明

Memcache::delete(string $key, int $timeout = 0): bool

Memcache::delete() は、 key に対応する項目を削除します。

パラメータ

key

削除したい項目のキー。

timeout

この非推奨のパラメータはサポートしておらず、デフォルトで 0 秒になっています。 このパラメータを使ってはいけません。

戻り値

成功した場合に true を、失敗した場合に false を返します。

変更履歴

バージョン 説明
Unknown timeout パラメータを使うことは推奨しません。 このパラメータの挙動は memcached のバージョンによって異なりますが、 0 に設定しておけば安全です。 その他の値を指定すると、memcache の削除が失敗する原因となる可能性があります。

例1 Memcache::delete() の例

<?php

/* 手続き型の API */
$memcache_obj = memcache_connect('memcache_host', 11211);

/* 項目をサーバーから削除します */
memcache_delete($memcache_obj, 'key_to_delete');

/* オブジェクト指向の API */
$memcache_obj = new Memcache;
$memcache_obj->connect('memcache_host', 11211);

$memcache_obj->delete('key_to_delete');

?>

参考

add a note

User Contributed Notes 5 notes

up
7
nibblebot at gmail dot com
13 years ago
the Memcache::delete(key) function is broken on several combinations of memcached+pecl-memcache combinations.

pecl-memcache 2.2.5 + memcached 1.4.2 - Memcache::delete(key) WORKS

pecl-memcache 2.2.5 + memcached 1.4.3 - Memcache::delete(key) DOES NOT WORK

pecl-memcache 2.2.5 + memcached 1.4.4 - Memcache::delete(key) WORKS

pecl-memcache 2.2.5 + memcached 1.4.5 - Memcache::delete(key) WORKS

pecl-memcache 3.0.4 + memcached 1.4.2 - Memcache::delete(key) WORKS

pecl-memcache 3.0.4 + memcached 1.4.3 - Memcache::delete(key) DOES NOT WORK

pecl-memcache 3.0.4 + memcached 1.4.4 - Memcache::delete(key) DOES NOT WORK

pecl-memcache 3.0.4 + memcached 1.4.5 - Memcache::delete(key) DOES NOT WORK
up
4
vbaspcppguy at gmail dot com
13 years ago
According to the documents, $timeout is not required, but for me if I did not include it regardless of value, it fired an error. I made a simple fix for it.

<?php
class memcache_tools extends memcache
{
public function
delete($key, $expire=0)
{
parent::delete($key, $expire);
}
}
?>

This will force it to behave as it should regardless of version.
up
1
me at adamhahn dot com
11 years ago
I could not get the delete to work properly, so I ended up trying the 'set' method and setting the timeout value to -1.

<?php
$memcache
->set('index', 'deleted', 0, -1);
?>

It solved my problem with the delete method.

(using memcached 1.4.5 and pecl-memcache 3.0.6)
up
0
padys
10 years ago
In my case this code does NOT work:
<?php
$memcache
->set('index', 'deleted', 0, -1);
?>
because of expire == -1.

I set expire = 1 (and I prefer "replace"):
<?php
$memcache
->replace('index', '', 0, 1);
?>
up
-4
Anonymous
13 years ago
Regardless of whether or not it succeeds, for me on Ubuntu 10.04 it always returns false. Just an FYI, you can't seem to rely on the result.
To Top