LXXXIV. Memcache 関数

導入

Memcache モジュールは、memcached に対する手続き型および オブジェクト指向のインターフェイスを提供します。これは非常に効率的な キャッシュデーモンで、動的な web アプリケーションでの データベースの読み込み量を減らすように設計されています。

memcached についてのより詳細な情報は http://www.danga.com/memcached/ にあります。

要件

このモジュールは、その場でのデータ圧縮機能をサポートするために zlib の関数を使用しています。 このモジュールをインストールするには Zlib が必要となります。

memcache 拡張モジュールを使用するには、PHP 4.3.3 以降が必要です。

インストール手順

この PECL 拡張 モジュールは PHP にバンドルされていません。 この PECL 拡張モジュールをインストールする方法は、 マニュアルの PECL 拡張モジュールのインストール という章にあります。 新規リリース・ダウンロード・ソースファイル・管理者情報・CHANGELOG といった関連する情報については、次の場所にあります。 http://pecl.php.net/package/memcache .

これらの関数を使用するには、 --enable-memcache[=DIR] オプションを 指定し、Memcache のサポートを有効にして PHP をコンパイルする必要があります。

Windows ユーザがこれらの関数を使用するには、 php.ini の中で php_memcache.dll を有効にします。 この PECL 拡張モジュール の DLL PHP ダウンロード ページ または http://snaps.php.net/ からダウンロードできます。

実行時設定

php.ini の設定により動作が変化します。

表 1. Memcache 設定オプション

名前 デフォルト 変更の可否 変更履歴
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 以降で使用可能です
PHP_INI_* 定数の詳細および定義については 付録G を参照してください。

以下に設定ディレクティブに関する 簡単な説明を示します。

memcache.allow_failover boolean

エラー時に、透過的なフェイルオーバーを行うかどうかを指定します。

memcache.max_failover_attempts integer

データの設定や取得を試みるサーバの数を指定します。 memcache.allow_failover を指定した場合にのみ使用します。

memcache.chunk_size integer

データは、ここで指定した大きさに分割されます。 この値を小さくすると、ネットワークに対する書き込みが多くなります。 不可解な速度低下が発生する場合は、この値を 32768 まで大きくしてください。

memcache.default_port string

memcached サーバに接続する際に、 デフォルトで使用される TCP ポート番号。

リソース型

memcache モジュールで使用されるリソースは 1 種類で、それは キャッシュサーバとの接続を指す ID です。

定義済み定数

表 2. MemCache 定数

名前 説明
MEMCACHE_COMPRESSED ( integer ) Memcache::set() Memcache::add() そして Memcache::replace() を実行する際に、同時にデータの圧縮を行います。

例 1. memcache 拡張モジュールの概要

<?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 );

?>

上の例では、オブジェクトをキャッシュに保存した後に、改めて取得しなおします。 オブジェクトやその他の非スカラー型のデータは、保存される前に シリアライズされます。そのため (接続 ID などの) リソース型を 保存することはできません。

目次
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  -- サーバのパラメータおよび状態を、実行時に変更する