Memcached Memcached::cas

(PECL memcached >= 0.1.0)

Memcached::cas — 아이템 비교 및 ​​교환


설명

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

Memcached::cas()는 "확인 및 설정" 작업을 수행하므로 이 클라이언트가 마지막으로 가져온 이후 다른 클라이언트가 항목을 업데이트하지 않은 경우에만 항목이 저장됩니다. 확인은 memcache에 의해 기존 항목에 할당된 고유한 64비트 값인 cas_token 매개변수를 통해 수행됩니다. 이 토큰을 얻는 방법은 Memcached::get*() 메서드에 대한 설명서를 참조하십시오. 토큰은 PHP의 정수 공간의 제한으로 인해 이중으로 표시됩니다.


매개변수

cas_token
기존 항목과 연결된 고유 값입니다. Memcache에 의해 생성됩니다.
key
값을 저장할 키입니다.
value
저장할 값입니다.
expiration
만료 시간, 기본값은 0입니다. 자세한 내용은 만료 시간을 참조하세요.

반환 값

성공하면 true를, 실패하면 false를 반환합니다. Memcached::getResultCode()는 저장하려는 항목이 마지막으로 가져온 이후 수정된 경우 Memcached::RES_DATA_EXISTS를 반환합니다.


Examples

예제 #1 Memcached::cas() 예제

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

do {
    /* fetch IP list and its token */
    $ips = $m->get('ip_block', null, $cas);
    /* if list doesn't exist yet, create it and do
       an atomic add which will fail if someone else already added it */
    if ($m->getResultCode() == Memcached::RES_NOTFOUND) {
        $ips = array($_SERVER['REMOTE_ADDR']);
        $m->add('ip_block', $ips);
    /* otherwise, add IP to the list and store via compare-and-swap
       with the token, which will fail if someone else updated the list */
    } else {
        $ips[] = $_SERVER['REMOTE_ADDR'];
        $m->cas($cas, 'ip_block', $ips);
    }
} while ($m->getResultCode() != Memcached::RES_SUCCESS);

?>
                  
                

기타