(PECL mysqlnd_memcache >= 1.0.0)
mysqlnd_memcache_get_config — プラグインの設定情報を返す
この関数は、MySQL 接続にアタッチされた mysqlnd_memcache 関連のすべての設定情報を配列で返します。 MySQL、mysqlnd_memcache_set() で渡した Memache オブジェクト、 自動的に MySQL サーバーから取得したテーブルマッピング情報などが含まれます。
成功した場合に mysqlnd_memcache の設定情報の配列、それ以外の場合に FALSE を返します。
返される配列にはこれらの要素が含まれます。
| 配列のキー | 説明 |
|---|---|
| memcached | この MySQL 接続に mysqlnd_memcache_set() で関連づけた Memcached のインスタンス。 これを使って memcache 接続の設定を変更することもできるし、 この接続上のサーバーに直接問い合わせて設定を変更することもできます。 |
| pattern | サーバーに送信された SQL クエリーにマッチさせるための PCRE 正規表現。 このパターンにマッチするクエリーをさらに分析し、 そのクエリーを横取りして memcache インターフェイスに送るのか 普通の MySQL プロトコルでサーバーに送るのかを判断します。 デフォルトのパターン (MYSQLND_MEMCACHE_DEFAULT_REGEXP) を使うか、あるいは mysqlnd_memcache_set() でパターンを設定します。 |
| mappings | プラグイン側から探す、すべての設定済みコンテナの一覧を含む連想配列。 要素のキーが、MySQL の設定内のコンテナ名になります。 その値については後で説明します。このフィールドの中身を作るには、 mysqlnd_memcache_set() で MySQL と memcache の接続を関連づけるときに MySQL Server に問い合わせます。 |
| mapping_query | mysqlnd_memcache_set() で、利用可能なコンテナとマッピングを識別するときに使う SQL クエリー。 このクエリーの結果を mappings 要素に渡します。 |
| 配列のキー | 説明 |
|---|---|
| prefix | memcache 経由でデータにアクセスするときに使うプレフィックス。 MySQL InnoDB Memcache Deamon プラグインの場合、通常は @@ で始まって、最後は変更可能なセパレータになります。 このプレフィックスは、memcache プロトコルを使うときにキーの値の前に置かれます。 |
| schema_name | アクセスするテーブルを含むスキーマ (データベース) の名前。 |
| table_name | memcache プロトコルでアクセス可能なデータを含むテーブルの名前。 |
| id_field_name | memcache 経由でテーブルにアクセスするときに、キーとして使う id が含まれるフィールド (カラム) の名前。たいていは、主キーが設定されているフィールドとなります。 |
| separator |
フィールドの値を分割するときに使うセパレータ。
memcache が単一の値にしかアクセスできないのに対して
MySQL は複数のカラムをこの値に押し込めることができるので、
このセパレータが必要になります。
|
| fields | このマッピングで利用可能なすべてのフィールド名の配列。 |
例1 mysqlnd_memcache_get_config() の例
<?php
$mysqli = new mysqli("host", "user", "passwd", "database");
$memc = new Memcached();
$memc->addServer("host", 11211);
mysqlnd_memcache_set($mysqli, $memc);
var_dump(mysqlnd_memcache_get_config($mysqli));
?>
上の例の出力は以下となります。
array(4) {
["memcached"]=>
object(Memcached)#2 (0) {
}
["pattern"]=>
string(125) "/^\s*SELECT\s*(.+?)\s*FROM\s*`?([a-z0-9_]+)`?\s*WHERE\s*`?([a-z0-9_]+)`?\s*=\s*(?(?=["'])["']([^"']*)["']|([0-9e\.]*))\s*$/is"
["mappings"]=>
array(1) {
["mymem_test"]=>
array(6) {
["prefix"]=>
string(13) "@@mymem_test."
["schema_name"]=>
string(4) "test"
["table_name"]=>
string(10) "mymem_test"
["id_field_name"]=>
string(2) "id"
["separator"]=>
string(1) "|"
["fields"]=>
array(3) {
[0]=>
string(2) "f1"
[1]=>
string(2) "f2"
[2]=>
string(2) "f3"
}
}
}
["mapping_query"]=>
string(209) " SELECT c.name,
CONCAT('@@', c.name, (SELECT value FROM innodb_memcache.config_options WHERE name = 'table_map_delimiter')) AS key_prefix,
c.db_schema,
c.db_table,
c.key_columns,
c.value_columns,
(SELECT value FROM innodb_memcache.config_options WHERE name = 'separator') AS sep
FROM innodb_memcache.containers c"
}