関数・クラス解説

Memcached::cas

version:PECL memcached >= 0.1.0 (公式)

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

公式リファレンス

書式

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

説明

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

パラメータ

cas_token
既存のアイテムに割り当てたれた一意な値。memcache が生成します。
key
値の格納先のキー。
value
格納する値。
expiration
期限切れとなるまでの時間。デフォルトは 0。詳細な情報は有効期限 を参照ください。

返値

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

サンプル

例1 Memcached::cas() の例

$m = new Memcached(); $m->addServer('localhost', 11211); do {     /* IP リストとそのトークンを取得します */     $ips = $m->get('ip_block', null, $cas);     /* リストが存在しない場合はまず作成してからアトミック名追加を行います。        誰かがすでに追加している場合は失敗します */     if ($m->getResultCode() == Memcached::RES_NOTFOUND) {         $ips = array($_SERVER['REMOTE_ADDR']);         $m->add('ip_block', $ips);     /* それ以外の場合は、IP をリストに追加して、トークンによる「比較して入れ替え」        方式で格納します。だれかがリストを更新している場合は失敗します */     } else {          $ips[] = $_SERVER['REMOTE_ADDR'];         $m->cas($cas, 'ip_block', $ips);     }    } while ($m->getResultCode() != Memcached::RES_SUCCESS);

参考

  • Memcached::casByKey() - 指定したサーバーでアイテムを比較して入れ替える
  • ワード検索


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール