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);
?>
Memcache::delete
(PECL memcache >= 0.2.0)
Memcache::delete — Efface un élément du serveur de cache
Description
bool Memcache::delete
( string
$key
[, int $timeout = 0
] )
Memcache::delete() efface l'élément identifié par la clé
key.
Liste de paramètres
-
key -
La clé associée à l'élément à supprimer.
-
timeout -
Ce paramètre obsolète n'est pas supporté, et vaut par défaut 0 seconde. N'utilisez pas ce paramètre.
Historique
| Version | Description |
|---|---|
| Inconnu |
Il n'est pas recommandé d'utiliser le paramètre
timeout. Son comportement diffère suivants les versions
de memcached, mais le fait de lui passer la valeur 0 est sans
danger. Les autres valeurs pour cette fonctionnalité obsolète peut conduire
à une erreur de fonctionnement.
|
Valeurs de retour
Cette fonction retourne TRUE en cas de
succès ou FALSE si une erreur survient.
Exemples
Exemple #1 Exemple avec Memcache::delete()
<?php
/* API procédurale */
$memcache_obj = memcache_connect('memcache_host', 11211);
/* l'élément sera effacé par la serveur de cache */
memcache_delete($memcache_obj, 'key_to_delete');
/* API orientée objet */
$memcache_obj = new Memcache;
$memcache_obj->connect('memcache_host', 11211);
$memcache_obj->delete('key_to_delete');
?>
Voir aussi
- Memcache::set() - Stocke des données dans le serveur de cache
- Memcache::replace() - Remplace une valeur d'un élément existant
padys ¶
2 months ago
nibblebot at gmail dot com ¶
2 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
Anonymous ¶
2 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.
me at adamhahn dot com ¶
11 months 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)
vbaspcppguy at gmail dot com ¶
2 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.
Jocke Berg ¶
4 years ago
I was searching for a function/method in this class that would "reset" (or "update", depending on how you look at it) the timeout value for a key. I was searching my butt off when I finally figured; this is the one.
Example: You have accessed a web-page including something that should be "in-cache" for way more than 30 days (until the memcache server gets a downtime for some reason). Since the limit for having something in the cache is 30 days, this will be a problem. Simple (yet somewhat non-optimal) solution:
<?php
//How to "update" the value
if($memcache_key_exists){
$memcache_obj->delete('key', (3600*24*30));
}
?>
Have fun.
Wilfried Loche ¶
3 years ago
Hi,
Be careful about multi memcached servers. It seems logical the get() methods use only one server but, what about the delete() and update() methods?
In fact, at least the delete() method perform a delete on the first server it finds!
For the test code, you can see it there:
http://pecl.php.net/bugs/bug.php?id=16810
Hope this helps someone!
Wilfried
z at zaebal dot com ¶
3 years ago
To workaround the "delete" issue just pass zero as timeout parameter.
