mysqlnd_memcache_set

(PECL mysqlnd_memcache >= 1.0.0)

mysqlnd_memcache_setMySQL の接続を Memcache の接続と関連づける

説明

mysqlnd_memcache_set ( mixed $mysql_connection [, Memcached $memcache_connection [, string $pattern [, callback $callback ]]] ) : bool

mysql_connectionmemcache_connection を関連づけます。 pattern を PCRE 正規表現として使い、 callback は通知用のコールバックとして使います。 あるいは、mysql_connection との関連づけを解除します。

MySQL の接続と Memcache の接続を関連づけるときに、この関数は MySQL Server にその設定を問い合わせます。 サーバーの設定を自動検出し、InnoDB Memcache Daemon Plugin を使うのか MySQL Cluster NDB Memcache をサポートするのかを判断します。 また、サーバーに問い合わせて、エクスポートされたテーブルやその他の設定も自動検出します。 これらの自動的な設定の結果を取得するには、mysqlnd_memcache_get_config() を使います。

パラメータ

mysql_connection

MySQL サーバーへのハンドル。 PDO_MYSQLmysqli あるいは ext/mysql のいずれかの MySQL API 拡張モジュールを利用するもの。

memcache_connection

Memcached のインスタンスで、 MySQL Memcache Daemon プラグインに接続させるもの。 このパラメータを省略した場合は、mysql_connection と memcache の接続との関連づけを解除します。すでに別の接続と関連づけされている場合は、 その関連づけを上書きします。

pattern

Perl 互換の正規表現 形式のパターン。 memcache に渡すクエリーを見つけるときに使います。このパターンには三つのサブパターンが必要です。 最初のサブパターンにはリクエストするフィールドの一覧、 二番目のサブパターンにはクエリーが使う ID カラムの名前、 そして最後のサブパターンにはリクエストする値を指定します。 このパラメータを省略したり NULL を渡したりした場合は、 デフォルトのパターンを使います。

callback

クエリーを MySQL に送るときに使うコールバック。 このコールバックは boolean のパラメータを一つ受け取ります。 これは、クエリが Memcache 経由で送られたかどうかを表します。

返り値

関連づけ、あるいはその解除が成功した場合に TRUE、 エラーが発生した場合に FALSE を返します。

例1 mysqlnd_memcache_set() で、 var_dump() をデバッグ用コールバックとして使う例

<?php
$mysqli 
= new mysqli("host""user""passwd""database");
$memc = new Memcached();
$memc->addServer("host"11211);
mysqlnd_memcache_set($mysqli$memcNULL'var_dump');

/* このクエリーは横取りされ、Memcache プロトコル経由で実行します */
echo "Sending query for id via Memcache: ";
$mysqli->query("SELECT f1, f2, f3 FROM test WHERE id = 1");

/* f1 は有効なキーフィールドとして設定されていないので、これは Memcache を使いません */
echo "Sending query for f1 via Memcache: ";
$mysqli->query("SELECT id FROM test WHERE f1 = 1");

mysqlnd_memcache_set($mysqli);

/* これで、通常の MySQL プロトコルを使うようになります */
echo "var_dump won't be invoked: ";
$mysqli->query("SELECT f1, f2, f3 WHERE id = 1");

?>

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

Sending query for id via Memcache: bool(true)
Sending query for f1 via Memcache: bool(false)
var_dump won't be invoked: 

参考