(PECL mysqlnd_memcache >= 1.0.0)
mysqlnd_memcache_get_config — Получить информацию о настройках плагина
Функция возвращает массив со всеми настройками mysqlnd_memcache, который связан с соединением MySQL. Включая MySQL, объект Memcache, предоставленный через mysqlnd_memcache_set() и информацию о настройках отображения таблиц, которая была автоматически собрана с сервера MySQL.
Массив настроек mysqlnd_memcache или false
.
Возвращённый массив имеет следующие элементы:
Ключ | Описание |
---|---|
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 может отображать несколько столбцов в это значение.
|
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" }