Memcached::cas

(PECL memcached >= 0.1.0)

Memcached::casアイテムを比較して入れ替える

説明

publicMemcached::cas(
    string|int|float$cas_token,
    string$key,
    mixed$value,
    int$expiration = 0
): bool

Memcached::cas() は「チェックして設定」という操作を行います。 アイテムが格納されるのは、クライアントが最後にアイテムを取得して以降に 他のクライアントによるそのアイテムの更新がなかった場合のみです。 チェックは cas_token パラメータを使用して行います。 これは一意な 64 ビットの値で、既存のアイテムに対して memcache が割り当てます。 このトークンを取得する方法については Memcached::get*() メソッドのドキュメントを参照ください。 PHP の integer 型の範囲を超えるため、トークンは float 型であらわされることに注意しましょう。

パラメータ

cas_token

既存のアイテムに割り当てたれた一意な値。memcache が生成します。

key

値の格納先のキー。

value

格納する値。

expiration

期限切れとなるまでの時間。デフォルトは 0。詳細な情報は有効期限 を参照ください。

戻り値

成功した場合に true を、失敗した場合に false を返します。 格納しようとしているアイテムが最後の取得以降に更新されている場合、 Memcached::getResultCode()Memcached::RES_DATA_EXISTS を返します。

例1 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);

?>

参考

To Top