Memcached::cas

(PECL memcached >= 0.1.0)

Memcached::cas�Ƚϲ�����ֵ

˵��

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

Memcached::cas()ִ��һ��"��鲢����"�IJ�������ˣ������ڵ�ǰ�ͻ������һ��ȡֵ�󣬸�key ��Ӧ��ֵû�б������ͻ����޸ĵ�����£� ���ܹ���ֵд�롣�����ͨ��cas_token�������еģ� ���������Memcachָ�����Ѿ����ڵ�Ԫ�ص�һ��Ψһ��64λֵ�� ������ȡ���ֵ��鿴Memcached::get*() ϵ�з������ĵ���ע�⣺���ֵ��Ϊdouble��������ΪPHP�����Ϳռ����ơ�

��ע������Memcached��չ��Memcache��չһ���dz���Ҫ�����ƣ� ������һ��ϵͳ����Memcache�����ṩ���ij�ͻ�����ƣ��ֹ������£� ���Dz��ܱ�֤�߲����µ����ݰ�ȫ��

����

cas_token

���Ѵ���Ԫ�ع�����Ψһ��ֵ����Memcache���ɡ�

key

���ڴ洢ֵ�ļ�����

value

�洢��ֵ��

expiration

����ʱ�䣬Ĭ��Ϊ 0�� ������Ϣ��μ�����ʱ����

����ֵ

�ɹ�ʱ���� TRUE�� ������ʧ��ʱ���� FALSE�� �����Ԫ�س��Դ洢ʱ�����ڱ��ͻ������һ�λ�ȡ�������ͻ����޸ģ�Memcached::getResultCode() ������Memcached::RES_DATA_EXISTS��

����

Example #1 Memcached::cas() ʾ��

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

do {
    
/* ��ȡip�б��Լ����ı�� */
    
$ips $m->get('ip_block'null$cas);
    
/* ����б����ڣ� ����������һ��ԭ����ӣ���������ͻ����Ѿ���ӣ� ����ͷ���false��*/
    
if ($m->getResultCode() == Memcached::RES_NOTFOUND) {
        
$ips = array($_SERVER['REMOTE_ADDR']);
        
$m->add('ip_block'$ips);
    
/* ��������£����ip���б��У� ����cas��ʽȥ�洢�� �����������ͻ����޸Ĺ��� �򷵻�false */
    
} else { 
        
$ips[] = $_SERVER['REMOTE_ADDR'];
        
$m->cas($cas'ip_block'$ips);
    }   
} while (
$m->getResultCode() != Memcached::RES_SUCCESS);

?>

�μ�