関数・クラス解説

apcu_entry

version:PECL apcu >= 5.1.0 (公式)

アトミックに値を取得するか、キャッシュエントリを生成する

公式リファレンス

書式

apcu_entry ( string $key , callable $generator [, int $ttl = 0 ] ) : mixed

説明

キャッシュに key が存在するかをアトミックに検索します。 存在しなければ generator が呼び出され、 key が唯一の引数として渡されます。 generator ではオプションで指定する ttl の間だけ値をキャッシュし、 キャッシュした値が返されます。

注意: apcu_entry() 関数に制御が移ると、 キャッシュのロックを排他的に取得します。 このロックは apcu_entry() の実行が終わったときに開放されます: この結果、generator はクリティカルセクションに入るため、 ふたつのプロセスが同時に同じコードパスを実行することができなくなります。 さらに、他のAPCuのあらゆる関数も同時に並列に実行できなくなります。 なぜなら、同じロックを共有しているからです。

警告

generator から安全に呼び出せるAPCuの関数は apcu_entry() だけです。

パラメータ

key
キャッシュエントリのキー。
generator
key を唯一の引数として取り、 キャッシュする値を返す関数
ttl
有効期間。var は、キャッシュに ttl 秒間だけ格納されます。 ttl が経過すると、格納されている変数は (次のリクエスト時に)キャッシュから削除されます。 ttl が指定されていない(あるいは ttl が 0 の場合)は、 キャッシュから手動で削除される・あるいはキャッシュに存在できなくなる (clear, restart など)まで値が持続します。

返値

キャッシュされた値を返します。

注意

警告 generator から安全に呼び出せるAPCuの関数は apcu_entry() だけです。

サンプル

例1 apcu_entry() の例

$config = apcu_entry("config", function($key) {  return [    "fruit" => apcu_entry("config.fruit", function($key){      return [        "apples",        "pears"      ];    }),     "people" => apcu_entry("config.people", function($key){      return [       "bob",       "joe",       "niki"      ];    })  ]; }); var_dump($config);

上の例の出力は以下となります。

array(2) { ["fruit"]=> array(2) { [0]=> string(6) "apples" [1]=> string(5) "pears" } ["people"]=> array(3) { [0]=> string(3) "bob" [1]=> string(3) "joe" [2]=> string(4) "niki" } }

参考

  • apcu_store() - 変数をデータ領域にキャッシュする
  • apcu_fetch() - 格納されている変数をキャッシュから取得する
  • apcu_delete() - 格納されている変数をキャッシュから取り除く
  • ワード検索


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

    関数名アルファベット別

    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用の拡張モジュール