(PECL memcached >= 0.1.0)
Memcached::cas — Compare et échange un élément
$cas_token
,$key
,$value
,$expiration
= 0Memcached::cas() effectue une opération de "check and set"
(littéralement, vérifie et assigne), de manière que l'élément ne soit stocké que si aucune autre client ne l'a mise à jour depuis qu'il a été lu par le client courant. La vérification est faîte via le paramètre cas_token
qui est une valeur 64 bits unique, assignée à l'élément par memcached. Voir la documentation de Memcached::get*() pour savoir comment obtenir cette valeur. Notez que cette valeur est représentée par un nombre flottant, à cause de limitations dans l'espace des entiers de PHP.
cas_token
Valeur unique associée à un élément existant. Généré par memcached.
key
La clé avec laquelle stocker la valeur.
value
La valeur à stocker.
expiration
Le délai d'expiration, par défaut à zéro. Voyez délais d'expiration pour plus d'informations.
Cette fonction retourne true
en cas de succès ou false
si une erreur survient. La méthode Memcached::getResultCode() va retourner la constante Memcached::RES_DATA_EXISTS
si l'élément que vous essayez de stocker a été modifié depuis votre dernière lecture.
Exemple #1 Exemple avec Memcached::cas()
<?php
$m = new Memcached();
$m->addServer('localhost', 11211);
do {
$ips = $m->get('ip_block', null, $cas);
if ($m->getResultCode() == Memcached::RES_NOTFOUND) {
$ips = array($_SERVER['REMOTE_ADDR']);
$m->add('ip_block', $ips);
} else {
$ips[] = $_SERVER['REMOTE_ADDR'];
$m->cas($cas, 'ip_block', $ips);
}
} while ($m->getResultCode() != Memcached::RES_SUCCESS);
?>