Этот параметр конфигурации включает всю статистику, относящуюся к
работе с оперативной памятью, в общий набор данных
статистики встроенного драйвера MySQL.
Возможны нижеуказанные значения для строки форматирования:
A[,file] - добавляет вывод трассировки в указанный файл. Также
каждый раз проверяет успешность записи данных. Это реализовано
путем закрытия и повторного открытия файла (что достаточно медленно)ю
Дает гарантию целостности файла с логами в случае ошибки приложения.
a[,file] - добавляет вывод трассировки в указанный файл.
d - Включает вывод из макроса DBUG_<N> для текущего состояния.
Может быть дополнено списком ключевых слов, чтобы выбрать вывод только
содержащего эти ключевые слова макросов DBUG. Пустой список ключевых слов
подразумевает вывод всех для макросов.
f[,functions] - ограничивает действия отладчика указанным списком функций.
Пустой список функций подразумевает выбор всех функций.
F - помечает вывод каждой строчки отладчика названием исходного файла,
содержащего код, вызвавший вывод.
i - помечает вывод каждой строчки отладчика PID текущего процесса.
L - помечает вывод каждой строчки отладчика названием исходного файла,
вызвавшего вывод, и номером строки в ней.
n - помечает вывод каждой строчки отладчика уровнем вложенности
текущей функции.
o[,file] - сходно с a[,file], но перезаписывает старый файл, а не
дописывает его.
O[,file] - сходно с A[,file] но перезаписывает старый файл, а не
дописывает его.
t[,N] - включает контроль функций во время трассировки.
Максимальный уровень вложенности определен N и по умолчанию равен 200.
x - этот параметр активирует профилирование.
Пример:
d:t:x:O,/tmp/mysqlnd.trace
Замечание:
Эта возможность доступна только для отладочной сборки PHP.
Работает на Microsoft Windows при использовании отладочной сборки PHP,
если PHP был собран с помощью Microsoft Visual C версии 9 и выше.
mysqlnd и клиентская библиотека MySQL,
libmysql, используют разные сетевые API.
mysqlnd использует потоки PHP, тогда как
libmysql - собственную обертку над сетевыми вызовами
операционной системы. В PHP по умолчанию выставлен 60-секундный
таймаут для потоков. Этот параметр выставляется в
php.ini директивой default_socket_timeout.
По умолчанию это относится ко всем потокам, которым не установлено другое значение таймаута.
mysqlnd не устанавливал других значений, поэтому
подключения долго выполняющихся запросов могут быть отключены после
default_socket_timeout секунд с ошибкой
"2006 - MySQL Server has gone away". Клиентская библиотека MySQL
устанавливает таймаут по умолчанию равным 365 * 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_sizelong
mysqlnd резервирует внутренний командно-сетевой
буфер размером mysqlnd.net_cmd_buffer_size (в
php.ini) байт для каждого соединения. Если команда
клиент-серверного протокола MySQL, например,
COM_QUERY ("обычный" запрос), не
умещается в буфер, mysqlnd увеличит буфер до размера,
необходимого для отправки команды.
Каждый раз, когда буфер был увеличен, переменная статистики command_buffer_too_small
будет увеличена на один.
Если mysqlnd приходится увеличивать буфер сверх его
заданного размера в mysqlnd.net_cmd_buffer_size байт
для большинства соединений, вам следует обдумать необходимость увеличения
размера по-умолчанию, чтобы избежать повторных резерваций буфера.
Размер буфера по умолчанию равен 2048 байт в PHP 5.3.0. В дальнейших
версиях значение по умолчанию изменено на 4096 байт. Вручную его можно изменить
либо в php.ini, установив параметр
mysqlnd.net_cmd_buffer_size, или с помощью функции
mysqli_options(MYSQLI_OPT_NET_CMD_BUFFER_SIZE, int
size).
Рекомендуется устанавливать размер буфера не менее 4096 байт, поскольку
mysqlnd также использует его при считывании определенных
пакетов данных из MySQL. В PHP 5.3.0 mysqlnd не
станет увеличивать размер буфера, если MySQL пришлет пакет большего размера,
чем текущий размер буфера. Как следствие, mysqlnd
будет не в состоянии расшифровать пакет и клиентское приложение получит ошибку.
В PHP 5.3.0 есть только два случая, в которых пакет может быть больше указанных
по умолчанию в mysqlnd.net_cmd_buffer_size 2048 байт:
в пакете передается очень длинное сообщение об ошибке или пакет содержит
метаданные из COM_LIST_FIELD
(mysql_list_fields()) и эти данные получаются из
строкового столбца с очень длинным значением по умолчанию (более 1900 байт).
Начиная с PHP 5.3.2 mysqlnd не дает установить значение буфера менее
4096 байт.
Это значение также может быть установлено функцией
mysqli_option(link,
MYSQLI_OPT_NET_CMD_BUFFER_SIZE, size).
mysqlnd.net_read_buffer_sizelong
Максимальный размер части данных при считывании, в байтах, при обработке
тела командного пакета MySQL. Клиент-серверный протокол MySQL оборачивает
все свои команды в пакеты. Пакет состоит из небольшого заголовка и тела,
содержащего непосредственно данные команды. Размер тела закодирован в заголовке.
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).