mysqlnd_memcache_get_config

(PECL mysqlnd_memcache >= 1.0.0)

mysqlnd_memcache_get_configПолучить информацию о настройках плагина

Описание

mysqlnd_memcache_get_config ( mixed $connection ) : array

Функция возвращает массив со всеми настройками mysqlnd_memcache, который связан с соединением MySQL. Включая MySQL, объект Memcache, предоставленный через mysqlnd_memcache_set() и информацию о настройках отображения таблиц, которая была автоматически собрана с сервера MySQL.

Список параметров

connection

Соединение MySQL с помощью одного из модулей MySQL API для PHP: PDO_MYSQL, mysqli или ext/mysql.

Возвращаемые значения

Массив настроек mysqlnd_memcache или false.

Возвращенный массив имеет следующие элементы:

Структура массива mysqlnd_memcache_get_config()
Ключ Описание
memcached Экземпляр Memcached, связанный с соединением MySQL с помощью mysqlnd_memcache_set(). Можете использовать для изменения настроек соединения memcache или для прямых запросов к нему.
pattern Регулярное выражение PCRE для разбора SQL-запроса, отправленного на сервер. Запросы, попадающие под этот шаблон будут проанализированы на предмет возможности их перехвата и запуска через интерфейс memcache, либо необходимости использования стандартного протокола MySQL. Это может быть шаблон по умолчанию (MYSQLND_MEMCACHE_DEFAULT_REGEXP) или же его можно определить с помощью mysqlnd_memcache_set().
mappings Ассоциативный массив со списком всех настроенных контейнеров, как они были найдены плагинов. Ключами являются имена контейнеров в конфигурации MySQL. Значение описано ниже. Контент этого поля создается путем запроса к серверу MySQL в момент связи соединения MySQL с memcache функцией mysqlnd_memcache_set().
mapping_query SQL-запрос, используемый mysqlnd_memcache_set() для идентификации доступных контейнеров и отображений. Результат этого запроса предоставлен в элементах mappings.
Структура элемента отображения
Ключ Описание
prefix Префикс, используемый при доступе к данным через memcache. С плагином MySQL InnoDB Memcache Deamon он обычно начинается с @@ и заканчивается настраиваемым разделителем. Этот префикс помещается перед значением ключа во время использования протокола memcache.
schema_name Имя схемы (БД), содержащий необходимые таблицы.
table_name Имя таблицы, к которой обращаются через протокол memcache.
id_field_name Имя столбца таблицы, используемого в условии WHERE при запросе через memcache. Обычно это поле являющееся первичным ключем.
separator Разделитель, использующийся для разделения значений разных полей. Это нужно так как memcache предоставляет доступ только к одному значению, а MySQL может отображать несколько столбцов в это значение.

Замечание:

Разделитель, который может быть задан в конфигурации сервера MySQL, не должен встречаться в значениях, которые будут извлекаться через протокол memcache, так как это может поломать отображение.

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

Смотрите также