Налаштування під час виконання

Поведінка цих функцій залежить від установок у php.ini.

Параметри конфігурації вбудованого драйвера MySQL

ИмяПо умолчаниюМесто измененияСписок изменений
mysqlnd.collect_statistics"1"INI_SYSTEM
mysqlnd.collect_memory_statistics"0"INI_SYSTEM
mysqlnd.debug""INI_SYSTEM
mysqlnd.log_maskINI_ALL
mysqlnd.mempool_default_size16000INI_ALL
mysqlnd.net_read_timeout""86400""INI_ALLДо PHP 7.2.0 значенням за промовчанням "31536000", а місцем зміни було INI_SYSTEM
mysqlnd.net_cmd_buffer_size5.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_copyINI_ALLВидалено з PHP 8.1.0

Додаткова інформація та опис режимів INI_* дано у розділі «Місця встановлення параметрів конфігурації».

Коротке пояснення конфігураційних директив.

mysqlnd.collect_statisticsbool

Включає в себе збір різної статистики клієнта, доступ до якої можна отримати за допомогою mysqli_get_client_stats() mysqli_get_connection_stats(), і яка відображається у розділі mysqlnd виведення функції phpinfo()

Цей параметр конфігурації включає всю статистику вбудованого драйвера MySQL, Окрім роботи з оперативною пам'яттю.

mysqlnd.collect_memory_statisticsbool

Включає збирання різної статистики оперативної пам'яті, доступ до якої можна отримати за допомогою mysqli_get_client_stats() mysqli_get_connection_stats(), і яка відображається у розділі mysqlnd виведення функції phpinfo()

Цей параметр конфігурації включає всю статистику, що стосується роботи з оперативною пам'яттю, в загальний набір даних статистики вбудованого драйвера MySQL

mysqlnd.debugstring

Записує команди з усіх модулів, які використовують mysqlndу вказаний файл з логами.

Формат параметра следующий:mysqlnd.debug = "option1[,parameter_option1][:option2[,parameter_option2]]"

Можливі нижченаведені значення для рядка форматування:

  • A[,file]- Додає виведення трасування у вказаний файл. Також щоразу перевіряє успішність запису даних. Це реалізовано шляхом закриття та повторного відкриття файлу (що досить повільно). Надає гарантію цілісності файлу з логами у разі помилки програми.

  • a[,file]- Додає виведення трасування у вказаний файл.

  • d - Включає виведення з макросу DBUG_поточного стану. Може бути доповнено списком ключових слів, щоб вибрати висновок макросу DBUG, що тільки містить ці ключові слова. Порожній список ключових слів передбачає виведення всіх макросів.

  • f[,functions]- обмежує дії налагоджувача вказаним списком функцій. Порожній список функцій передбачає вибір усіх функцій.

  • F - позначає виведення кожного рядка відладчика назвою вихідного файлу, що містить код, що спричинив висновок.

  • i - позначає виведення кожного рядка відладчика PID поточного процесу.

  • L - позначає виведення кожного рядка відладчика назвою вихідного файлу, що викликав висновок, та номером рядка у ній.

  • n - позначає виведення кожного рядка відладчика рівнем вкладеності поточної функції.

  • o[,file]- подібно до a[,file]але перезаписує старий файл, а не дописує його.

  • O[,file]- подібно до A[,file]але перезаписує старий файл, а чи не дописує його.

  • t[,N]- Включає контроль функцій під час трасування. Максимальний рівень вкладеності визначено N і за умовчанням дорівнює 200.

  • x – цей параметр активує профільування.

  • m - відстежувати дзвінки, пов'язані з виділеннями та вивільненням пам'яті.

Приклад:

d:t:x:O,/tmp/mysqlnd.trace

Зауваження :

Ця можливість доступна тільки для налагодження PHP. Працює на Microsoft Windows при використанні налагоджувального складання PHP, якщо PHP було зібрано за допомогою Microsoft Visual C версії 9 і вище.

mysqlnd.log_maskint

Визначає, які запити журналюватимуться. Значення за промовчанням - 0, що вимикає журнал. Значення параметра – лише ціле число, константи PHP використовувати не можна. Наприклад, при значенні 48 (16 + 32) в журнал записуватимуться повільні запити, які використовують невідповідні індекси (SERVER_QUERY_NO_GOOD_INDEX_USED ​​= 16), або не використовують їх взагалі SERVER_QUERY_NO_INDEX_USED ​​= 32). При значенні 2043 (1 + 2 + 8 + ... + 1024) до журналу записуватимуться всі типи повільних запитів.

Використовуються такі типи запитів: SERVER_STATUS_IN_TRANS=1, SERVER_STATUS_AUTOCOMMIT=2, SERVER_MORE_RESULTS_EXISTS=8, SERVER_QUERY_NO_GOOD_INDEX_USED=16, SERVER_QUERY_NO_INDEX_USED=32, SERVER_STATUS_CURSOR_EXISTS=64, SERVER_STATUS_LAST_ROW_SENT=128, SERVER_STATUS_DB_DROPPED=256, SERVER_STATUS_NO_BACKSLASH_ESCAPES=512, and SERVER_QUERY_WAS_SLOW=1024.

mysqlnd.mempool_default_sizeint

Default size of the mysqlnd memory pool, which is used by result sets.

mysqlnd.net_read_timeoutint

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_sizeint

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_sizeint

Максимальний розмір частини даних при зчитуванні в байтах при обробці тіла командного пакета 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)

mysqlnd.sha256_server_public_keystring

Ця опція відноситься до плагіну автентифікації SHA-256 і містить шлях до файлу з публічним ключем RSA MySQL-сервера.

Клієнт може як не вказувати публічний ключ RSA, вказати його за допомогою цієї опції, або встановити ключ під час виконання за допомогою функції mysqli_options(). Якщо публічний ключ RSA не був переданий клієнтом, то ключ буде отримано в результаті стандартної процедури автентифікації плагіну автентифікації SHA-256.

mysqlnd.trace_allocstring

mysqlnd.fetch_data_copyint

Примушує копіювати набори з внутрішнього буфера наборів PHP змінні замість використання логіки з посиланнями і "копіюванням при записі" за замовчуванням. Дивіться реалізація управління пам'яттю для більшої інформації.

Копіювання результуючих наборів замість PHP змінних посилаються на них дозволяють виділяти пам'ять для PHP змінних заздалегідь. Залежно від коду користувача, реальних запитів до бази даних і розмірів їх результатів, можна знизити споживання пам'яті mysqlnd.

Не застосовуйте, якщо використовується PDO_MySQL. У PDO_MySQL ще не додано підтримку цього нового режиму.

Зауваження: Видалено з PHP 8.1.0