Memcache::delete()
(PECL memcache >= 0.2.0)
从服务端删除一个元素
说明
Memcache::delete(string $key[,int $timeout= 0]): bool
Memcache::delete()函数通过$key删除一个元素。如果参数$timeout指定,该元素会在$timeout秒后失效。同样也可以使用memcache_delete()函数完成同样功能。
参数
- $key
要删除的元素的key。
- $timeout
删除该元素的执行时间。如果值为0,则该元素立即删除,如果值为30,元素会在30秒内被删除。
更新日志
版本 | 说明 |
---|---|
Unknown | It's not recommended to use the$timeoutparameter. The behavior differs between memcached versions, but setting to0is safe. Other values for this deprecated feature may cause the memcache delete to fail. |
返回值
成功时返回TRUE
,或者在失败时返回FALSE
。
范例
Example #1 Memcache::delete() example
<?php /* procedural API */ $memcache_obj = memcache_connect('memcache_host', 11211); /* 10秒后key_to_delete对应的值会被从服务端删除 */ memcache_delete($memcache_obj, 'key_to_delete', 10); /* OO API */ $memcache_obj = new Memcache; $memcache_obj->connect('memcache_host', 11211); $memcache_obj->delete('key_to_delete', 10); ?>
参见
- Memcache::set() Store data at the server
- Memcache::replace() 替换已经存在的元素的值
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
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.
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)
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); ?>
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.