Memcache 関数
導入
Memcache モジュールは、memcached に対する手続き型および オブジェクト指向のインターフェイスを提供します。これは非常に効率的な キャッシュデーモンで、動的な web アプリケーションでの データベースの読み込み量を減らすように設計されています。
Memcache モジュールは、セッション ハンドラ (memcache) も提供します。
memcached についてのより詳細な情報は » https://www.danga.com/memcached/ にあります。
要件
このモジュールは、その場でのデータ圧縮機能をサポートするために » zlib の関数を使用しています。 このモジュールをインストールするには Zlib が必要となります。
memcache 拡張モジュールを使用するには、PHP 4.3.3 以降が必要です。
インストール手順
この » PECL 拡張 モジュールは PHP にバンドルされていません。 この PECL 拡張モジュールをインストールする方法は、 マニュアルの PECL 拡張モジュールのインストール という章にあります。 新規リリース・ダウンロード・ソースファイル・管理者情報・CHANGELOG といった関連する情報については、次の場所にあります。 » https://pecl.php.net/package/memcache.
これらの関数を使用するには、 --enable-memcache[=DIR] オプションを 指定し、Memcache のサポートを有効にして PHP をコンパイルする必要があります。 オプションで、memcache セッションハンドラのサポートを無効にすることもできます。 その場合は --disable-memcache-session を指定します。
Windows ユーザがこれらの関数を使用するには、php.ini の中で php_memcache.dll を有効にします。 この PECL 拡張モジュール用の DLL は、» PHP のダウンロード ページあるいは » https://pecl4win.php.net/ からダウンロードできます。
実行時設定
php.ini の設定により動作が変化します。
名前 | デフォルト | 変更の可否 | 変更履歴 |
---|---|---|---|
memcache.allow_failover | "1" | PHP_INI_ALL | memcache 2.0.2 以降で使用可能です |
memcache.max_failover_attempts | "20" | PHP_INI_ALL | memcache 2.1.0 以降で使用可能です |
memcache.chunk_size | "8192" | PHP_INI_ALL | memcache 2.0.2 以降で使用可能です |
memcache.default_port | "11211" | PHP_INI_ALL | memcache 2.0.2 以降で使用可能です |
memcache.hash_strategy | "standard" | PHP_INI_ALL | memcache 2.2.0 以降で使用可能です |
memcache.hash_function | "crc32" | PHP_INI_ALL | memcache 2.2.0 以降で使用可能です |
session.save_handler | "files" | PHP_INI_ALL | memcache 2.1.2 以降で使用可能です |
session.save_path | "" | PHP_INI_ALL | memcache 2.1.2 以降で使用可能です |
以下に設定ディレクティブに関する 簡単な説明を示します。
- memcache.allow_failover boolean
-
エラー時に、透過的なフェイルオーバーを行うかどうかを指定します。
- memcache.max_failover_attempts integer
-
データの設定や取得を試みるサーバの数を指定します。 memcache.allow_failover を指定した場合にのみ使用します。
- memcache.chunk_size integer
-
データは、ここで指定した大きさに分割されます。 この値を小さくすると、ネットワークに対する書き込みが多くなります。 不可解な速度低下が発生する場合は、この値を 32768 まで大きくしてください。
- memcache.default_port string
-
memcached サーバに接続する際に、 デフォルトで使用される TCP ポート番号。
- memcache.hash_strategy string
-
キーをサーバと関連づけるために使用する方式を制御します。この値を consistent にすると、一貫したハッシュを使用します。 これにより、サーバを追加したり削除したりした際にキーの再マッピングの必要がなくなります。 この値を standard にすると、以前の方法を使用します。
- memcache.hash_function string
-
キーをサーバに関連づける際に使用するハッシュ関数を制御します。 crc32 は標準の CRC32 ハッシュを、そして fnv は FNV-1a を使用します。
- session.save_handler string
-
memcache をセッションハンドラとして使用するには、この値を memcache と設定します。
- session.save_path string
-
セッションを格納するためのサーバの URL を、カンマ区切りで指定します。たとえば "tcp://host1:11211, tcp://host2:11211" のようになります。
個々の URL には、そのサーバ用のパラメータを含めることができます。これは Memcache::addServer() メソッドと同じ形式です。たとえば "tcp://host1:11211?persistent=1&weight=1&timeout=1&retry_interval=15" のようになります。
リソース型
memcache モジュールで使用されるリソースは 1 種類で、それは キャッシュサーバとの接続を指す ID です。
定義済み定数
名前 | 説明 |
---|---|
MEMCACHE_COMPRESSED (integer) | Memcache::set()、 Memcache::add() そして Memcache::replace() を実行する際に、同時にデータの圧縮を行います。 |
MEMCACHE_HAVE_SESSION (integer) | この Memcache セッションハンドラが有効な場合に 1、それ以外の場合に 0 となります。 |
例
Example#1 memcache 拡張モジュールの概要
この例では、オブジェクトをキャッシュに保存した後に、改めて取得しなおします。 オブジェクトやその他の非スカラー型のデータは、保存される前に シリアライズされます。そのため (接続 ID などの) リソース型を 保存することはできません。
<?php
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("接続できませんでした");
$version = $memcache->getVersion();
echo "サーバのバージョン: ".$version."<br/>\n";
$tmp_object = new stdClass;
$tmp_object->str_attr = 'test';
$tmp_object->int_attr = 123;
$memcache->set('key', $tmp_object, false, 10) or die ("データをサーバに保存できませんでした");
echo "データをキャッシュに保存します (データの有効期限は 10 秒です)<br/>\n";
$get_result = $memcache->get('key');
echo "キャッシュから取得したデータ:<br/>\n";
var_dump($get_result);
?>
Example#2 memcache セッションハンドラの使用例
<?php
$session_save_path = "tcp://$host:$port?persistent=1&weight=2&timeout=2&retry_interval=10, ,tcp://$host:$port ";
ini_set('session.save_handler', 'memcache');
ini_set('session.save_path', $session_save_path);
?>
目次
- Memcache::add — サーバに項目を追加する
- Memcache::addServer — コネクションプールに memcached サーバを追加する
- Memcache::close — memcached サーバとの接続を閉じる
- Memcache::connect — memcached サーバへの接続をオープンする
- memcache_debug — デバッグ出力のオン/オフを切り替える
- Memcache::decrement — 項目の値を減らす
- Memcache::delete — サーバから項目を削除する
- Memcache::flush — サーバ上のすべての既存項目を消去する
- Memcache::get — サーバから項目を取得する
- Memcache::getExtendedStats — プール内のすべてのサーバの統計情報を取得する
- Memcache::getServerStatus — サーバの状態を返す
- Memcache::getStats — サーバの統計情報を取得する
- Memcache::getVersion — サーバのバージョンを返す
- Memcache::increment — 項目の値を増やす
- Memcache::pconnect — memcached サーバへの持続的な接続をオープンする
- Memcache::replace — 既存項目の値を置換する
- Memcache::set — データをサーバに格納する
- Memcache::setCompressThreshold — 大きな値に対する自動圧縮処理を有効にする
- Memcache::setServerParams — サーバのパラメータおよび状態を、実行時に変更する