Поведение функций зависит от установок в файле php.ini.
| Имя | По умолчанию | Место изменения | Список изменений |
|---|---|---|---|
| mysqlnd.collect_statistics | "1" | INI_SYSTEM |
|
| mysqlnd.collect_memory_statistics | "0" | INI_SYSTEM |
|
| mysqlnd.debug | "" | INI_SYSTEM |
|
| mysqlnd.log_mask | 0 | INI_ALL |
|
| mysqlnd.mempool_default_size | 16000 | INI_ALL |
|
| mysqlnd.net_read_timeout | ""86400"" | INI_ALL |
До PHP 7.2.0 значением по умолчанию "31536000", а местом изменения было INI_SYSTEM |
| mysqlnd.net_cmd_buffer_size | 5.3.0 — "2048", 5.3.1 — "4096" | INI_SYSTEM |
|
| mysqlnd.net_read_buffer_size | "32768" | INI_SYSTEM |
|
| mysqlnd.sha256_server_public_key | "" | INI_PERDIR |
|
| mysqlnd.trace_alloc | "" | INI_SYSTEM |
|
| mysqlnd.fetch_data_copy | 0 | INI_ALL |
Удалено с PHP 8.1.0 |
Краткое разъяснение конфигурационных директив.
mysqlnd.collect_statistics
bool
mysqlnd вывода функции
phpinfo().
Этот параметр конфигурации включает всю
статистику встроенного драйвера
MySQL, кроме относящейся к работе с оперативной памятью.
mysqlnd.collect_memory_statistics
bool
mysqlnd вывода функции
phpinfo().
Этот параметр конфигурации включает всю статистику, относящуюся к
работе с оперативной памятью, в общий набор данных
статистики встроенного драйвера MySQL.
mysqlnd.debug string
mysqlnd, в указанный файл с логами.
Формат параметра следующий: mysqlnd.debug =
"option1[,parameter_option1][:option2[,parameter_option2]]".
Возможны нижеуказанные значения для строки форматирования:
d:t:x:O,/tmp/mysqlnd.trace
Замечание: Функция доступна только в отладочной сборке PHP.
mysqlnd.log_mask
int
mysqlnd.mempool_default_size
int
mysqlnd.net_read_timeout
int
mysqlnd и клиентская библиотека MySQL,
libmysqlclient, используют разные сетевые API.
mysqlnd использует потоки PHP, тогда как
libmysqlclient - собственную обёртку над сетевыми вызовами
операционной системы. В PHP по умолчанию выставлено 60-секундное
время ожидания потоков. Этот параметр выставляется в
php.ini директивой default_socket_timeout.
По умолчанию это относится ко всем потокам, которым не установлено другое значение времени ожидания.
mysqlnd не устанавливал других значений, поэтому
подключения долго выполняющихся запросов могут быть отключены после
default_socket_timeout секунд с ошибкой
2006 - MySQL Server has gone away. Клиентская библиотека MySQL устанавливает время ожидания по умолчанию равное 24 * 3600 секундам (1 день) и ждёт возникновения другого времени ожидания, такого как время ожидания TCP/IP. Теперь
mysqlnd использует такой же очень долгое время ожидания.
Это значение можно изменить через новую директиву php.ini -
mysqlnd.net_read_timeout.
mysqlnd.net_read_timeout будет использоваться любым
модулем (ext/mysql,
ext/mysqli, PDO_MySQL), использующим
mysqlnd. mysqlnd указывает
потокам PHP использовать mysqlnd.net_read_timeout.
Пожалуйста, обратите внимание, что могут быть небольшие различия между
MYSQL_OPT_READ_TIMEOUT в клиентской библиотеке MySQL
и потоках PHP, например, судя по документации, MYSQL_OPT_READ_TIMEOUT работает
только для TCP/IP-подключений и, вплоть до MySQL 5.1.2, только под
Windows. Потоки PHP могут не иметь подобных ограничений. В случае сомнений
просьба сверяться с документацией потоков.
mysqlnd.net_cmd_buffer_size
int
mysqlnd резервирует внутренний командно-сетевой
буфер размером mysqlnd.net_cmd_buffer_size (в
php.ini) байт для каждого соединения. Если команда
клиент-серверного протокола MySQL, например,
COM_QUERY (обычныйзапрос), не умещается в буфер,
mysqlnd увеличит буфер до размера,
необходимого для отправки команды.
Каждый раз, когда буфер был увеличен, переменная статистики command_buffer_too_small
будет увеличена на один.
Если mysqlnd приходится увеличивать буфер сверх его
заданного размера в mysqlnd.net_cmd_buffer_size байт
для большинства соединений, вам следует обдумать необходимость увеличения
размера по умолчанию, чтобы избежать повторных резерваций буфера.
Размер буфера по умолчанию составляет 4096 байт, что является наименьшим возможным значением.
Это значение также может быть установлено функцией
mysqli_options(link,
MYSQLI_OPT_NET_CMD_BUFFER_SIZE, size).
mysqlnd.net_read_buffer_size
int
mysqlnd считывает тело частями по
MIN(header.size, mysqlnd.net_read_buffer_size)
байт. Если размер тела пакета больше, чем
mysqlnd.net_read_buffer_size байт,
mysqlnd будет вызывать read()
несколько раз.
Это значение также может быть установлено функцией
mysqli_options(link,
MYSQLI_OPT_NET_READ_BUFFER_SIZE, size).
mysqlnd.sha256_server_public_key
string
mysqlnd.trace_alloc
string
mysqlnd.fetch_data_copy
int
Замечание: Удалено с PHP 8.1.0