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