1. 導入とインストール
memcached は、高性能の分散メモリ オブジェクト キャッシング システムであり、通常、データベースの読み込み負荷を軽減し、動的 Web アプリケーションの応答速度を向上させるために使用されます。
この拡張機能は、libmemcached ライブラリによって提供される API を使用して、memcached サーバーと対話します。また、セッション ハンドラー (memcached) も提供します。
memcached のインストールについては、この記事を参照してください: Ubuntu での memcached のインストールと構成。
PHP 拡張機能 memcached をインストールする前に、libmemcached をインストールする必要があります。libmemcached は、memcached の C/C++ ローカル クライアント ライブラリです。
libmemcached をインストールする前に、まず libcloog-ppl0 をインストールする必要があります。そうしないと、コンパイルとインストールのプロセス中にエラーが発生します:
sudo apt-get install libcloog-ppl0
その後、必要な libmemcached ソース コード インストール パッケージをここ http://libmemcached.org/libMemcached からダウンロードします。 html を展開し、ディレクトリを指定してディレクトリを入力し、次のコマンドを実行します。
./configure --prefix=/usr/local/libmemcached make sudo make install
次に、php の memcached 拡張機能をインストールできます。 http://pecl から必要なソース コードのインストール パッケージをダウンロードします。 php.net/package/memcached を指定し、指定されたディレクトリに解凍し、そのディレクトリに入り、次の手順を実行します。
phpize ./configure --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached make sudo make install
インストール プロセス中にエラーが報告される場合があります:
未知类型名称:memcached_server_instance_st
により make が失敗する 解決策は次のとおりです。
memcached 拡張機能解凍ディレクトリでこのファイル php_libmemcached_compat.h を見つけて、その中に次の行を追加します
typedef const struct memcached_server_st *memcached_server_instance_st;
make をもう一度実行すると、OK になります。
インストールが成功したら、php.ini に extension=memcacached を追加し、Apache を再起動し、phpinfo を確認して、次のセクション
を参照して、インストールが成功したことを証明します。
2. タイムアウト
一部のストレージ コマンドには、サーバーに送信されるときに有効期限値 (要素またはクライアント操作リクエストに関連する) が含まれます。このような用途では、送信される実際の値は Unix タイムスタンプ (1970 年 1 月 1 日から有効期限までの秒数の整数) または今からの秒数になります。後者の場合、この秒数は 60×60×24×30 (30 日の秒数) を超えることはできません。無効な値がこの値より大きい場合、サーバーはそれを実際の Unix タイムスタンプとして扱います。現在時刻からのオフセット。
有効期限値が 0 (デフォルト) に設定されている場合、この要素は期限切れになりません (ただし、他の新しい要素にスペースを割り当てるためにサーバーによって削除される可能性があります)。
3. コールバック
1. 結果コールバック
Result コールバック メソッドは、Memcached::getDelayed() メソッドまたは Memcached::getDelayedBykey() メソッドを通じて要素を取得した後、結果セット内の要素ごとに 1 回呼び出されます。 コールバック関数は、配列で記述された Memcached オブジェクトと要素情報を受け取ることができます。このコールバック関数は情報を返す必要はありません。
例 #1 結果コールバックの例
<?php $m = new Memcached(); $m->addServer('localhost', 11211); $items = array( 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3' ); $m->setMulti($items); $m->getDelayed(array('key1', 'key3'), true, 'result_cb'); function result_cb($memc, $item) { var_dump($item); } ?>
上記ルーチンの出力は次のようになります:
array(3) { ["key"]=> string(4) "key1" ["value"]=> string(6) "value1" ["cas"]=> float(49) } array(3) { ["key"]=> string(4) "key3" ["value"]=> string(6) "value3" ["cas"]=> float(50) }
2. リードスルーキャッシュコールバック
リードスルーキャッシュコールバックは、要素がサーバーから取得されないときに呼び出されます。このコールバック関数は、Memcached オブジェクト、要求されたキー、および参照によって渡される値変数の 3 つのパラメーターを受け取ります。このコールバック関数は、キーに値がない場合に true または false を返してデフォルト値を設定することを決定します。 コールバックが true を返した場合、Memcached は「送信パラメータ」(参照によって渡される値変数) に格納されている値を memcached サーバーに格納し、元の呼び出し関数に返します。 Memcached::get() および Memcached::getByKey() のみがこのタイプのコールバックをサポートします。これは、Memcache プロトコルが複数のキーを要求するときに取得されていないキーに関する情報の提供をサポートしていないためです。
例 #2 コールバックの例を読んでください
<?php $m = new Memcached(); $m->addServer('localhost', 11211); $profile_info = $m->get('user:'.$user_id, 'user_info_cb'); function user_info_cb($memc, $key, &$value) { $user_id = substr($key, 5); /* 从数据库读取个人信息 */ /* ... */ $value = $profile_info; return true; } ?>
4. セッションのサポート
memcached は、ユーザー セッション データを memcached サーバーに保存するために使用できるカスタム セッション プロセッサを提供します。 完全に別個の memcached インスタンスが内部で使用されるため、必要に応じて別のサーバー プールをセットアップできます。セッション キーは、プレフィックス memc.sess.key の下に保存されるため、セッションと通常のキャッシュに同じサーバー プールを使用している場合は、この点に注意してください。 注釈: セッションが通常のキャッシュから分離されるもう 1 つの理由は、通常のキャッシュが memcached サーバーをいっぱいにするときに、セッションがキャッシュから追い出され、ユーザーが不可解に切断される可能性があることです。
session.save_handler は memcached に設定され、memcached のセッションプロセッサを有効にします。 session.save_path は、カンマ区切りの hostname:port スタイルのセッション キャッシュ サーバー プールを定義します (例: "sess1:11211, sess2:11211")。
5. Memcached クラス
は、memcached サービス クラスターへの接続を表します。
Memcached::add — 新しいキーに要素を追加します
Memcached::addByKey — 指定されたサーバー上の新しいキーに要素を追加します
Memcached::addServer — サーバーをサーバープールに追加します
Memcached::addServers — 複数のサーバーをサーバー プールに追加します
Memcached::append — 既存の要素にデータを追加します
Memcached::appendByKey — 指定されたサーバー上の既存の要素にデータを追加します
Memcached:: cas — 比較と値を交換する
Memcached::casByKey — 指定されたサーバー上の値を比較および交換する
Memcached::__construct — Memcached インスタンスを作成する
Memcached::decrement — 数値要素の値をデクリメントする
Memcached: : decrementByKey — 特定のサーバーに保存されている数値アイテムの値をデクリメントします
Memcached::delete — 要素を削除します
Memcached::deleteByKey — 指定されたサーバーから要素を削除します
Memcached::deleteMulti — 複数のアイテムを削除します
Memcached : :deleteMultiByKey — 特定のサーバーから複数のアイテムを削除します
Memcached::fetch — 次の結果をフェッチします
Memcached::fetchAll — 残りの結果をすべてフェッチします
Memcached::flush — キャッシュ内のすべての要素を無効化します
Memcached: :get — 要素を取得します
Memcached::getAllKeys — すべてのサーバーに保存されているキーを取得します
Memcached::getByKey — 特定のサーバーから要素を取得します
Memcached::getDelayed — 複数の要素をリクエストします
Memcached :: getDelayedByKey — 指定されたサーバーから複数の要素をリクエストします
Memcached::getMulti — 複数の要素を取得します
Memcached::getMultiByKey — 特定のサーバーから複数の要素を取得します
Memcached::getOption — Memcached のオプション値を取得します
Memcached: :getResultCode — 最後の操作の結果コードを返します
Memcached::getResultMessage — 最後の操作の結果説明メッセージを返します
Memcached::getServerByKey — キーによってマップされたサーバー情報を取得します
Memcached::getServerList — Getサーバープール内のサーバーのリスト
Memcached::getStats — サーバープールの統計を取得します
Memcached::getVersion — サーバープール内のすべてのサーバーのバージョン情報を取得します
Memcached::increment — 値を増やします数値要素の
Memcached::incrementByKey — 特定のサーバーに保存されている数値項目の値を増分します
Memcached::isPersistent — memcache への永続的な接続が使用されているかどうかを確認します
Memcached::isPristine — インスタンスが使用されているかどうかを確認します最近作成されました
Memcached::prepend — 既存の要素にデータを追加します
Memcached::prependByKey — 特定のサーバー上の既存の項目にデータを追加します
Memcached::quit — 開いている接続をすべて閉じます
Memcached::replace —キーの下に存在する要素を置換
Memcached::replaceByKey — 特定のサーバー上の既存のキーの下にある項目を置換します
Memcached::resetServerList — サーバーリストからすべてのサーバーをクリアします
Memcached::set — 要素を保存します
Memcached ::setByKey — アイテムを特定のサーバーに保存します
Memcached::setMulti — 複数の要素を保存します
Memcached::setMultiByKey — 複数のアイテムを特定のサーバーに保存します
Memcached::setOption — memcached オプションを設定します
Memcached : :setOptions — Memcached のオプションを設定します
Memcached::setSaslAuthData — 認証に使用する資格情報を設定します
Memcached::touch — アイテムに新しい有効期限を設定します
Memcached::touchByKey — アイテムに新しい有効期限を設定します特定のサーバー