(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" }