mysqlnd_memcache_set
(PECL mysqlnd_memcache >= 1.0.0)
mysqlnd_memcache_set — MySQL の接続を Memcache の接続と関連づける
説明
mysqlnd_memcache_set
( mixed $mysql_connection
[, Memcached $memcache_connection
[, string $pattern
[, callable $callback
]]] ) : bool
mysql_connection
と
memcache_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_MYSQL、mysqli あるいは ext/mysql のいずれかの MySQL API 拡張モジュールを利用するもの。
memcache_connection
- Memcached のインスタンスで、 MySQL Memcache Daemon プラグインに接続させるもの。 このパラメータを省略した場合は、
mysql_connection
と memcache の接続との関連づけを解除します。すでに別の接続と関連づけされている場合は、 その関連づけを上書きします。 pattern
- Perl 互換の正規表現 形式のパターン。 memcache に渡すクエリーを見つけるときに使います。このパターンには三つのサブパターンが必要です。 最初のサブパターンにはリクエストするフィールドの一覧、 二番目のサブパターンにはクエリーが使う ID カラムの名前、 そして最後のサブパターンにはリクエストする値を指定します。 このパラメータを省略したり
null
を渡したりした場合は、 デフォルトのパターンを使います。 callback
- クエリーを MySQL に送るときに使うコールバック。 このコールバックは bool のパラメータを一つ受け取ります。 これは、クエリが 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, $memc, NULL, '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: