Rechercher une fonction PHP

Memcached::cas

(PECL memcached >= 0.1.0)

Memcached::casCompare et échange un élément

Description

public Memcached::cas ( float $cas_token , string $key , mixed $value [, int $expiration ] ) : bool

Memcached::cas() effectue une opération de "check and set" (littéralement, vérifie et assigne), de manière à ce 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. Voyez la documentation de Memcached::get*() pour savoir comment obtenir cette valeur. Notez que cette valeur est représentée par un nombre décimal, à cause de limitations dans l'espace des entiers de PHP.

Retour à la première page de Manuel PHP  Table des matières Haut

Liste de paramètres

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.

Retour à la première page de Manuel PHP  Table des matières Haut

Valeurs de retour

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.

Retour à la première page de Manuel PHP  Table des matières Haut

Exemples

Exemple #1 Exemple avec Memcached::cas()

<?php
$m 
= new Memcached();
$m->addServer('localhost'11211);

do {
    
/* Lit une IP et son CAS */
    
$ips $m->get('ip_block'null$cas);
    
/* Si l'IP n'existe pas encore, on la crèe et on fait un
       ajout atomique qui va échouer si l'IP a déjà été ajoutée */
    
if ($m->getResultCode() == Memcached::RES_NOTFOUND) {
        
$ips = array($_SERVER['REMOTE_ADDR']);
        
$m->add('ip_block'$ips);
    
/* Sinon, on ajoute l'IP à la liste, et on la stocke avec l'opération
       compare-and-swap et le token, qui va échouer si la liste a été mise à jour */
    
} else { 
        
$ips[] = $_SERVER['REMOTE_ADDR'];
        
$m->cas($cas'ip_block'$ips);
    }   
} while (
$m->getResultCode() != Memcached::RES_SUCCESS);

?>

Retour à la première page de Manuel PHP  Table des matières Haut

Voir aussi

Rechercher une fonction PHP

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-memcached.cas.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut