1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-23 23:32:16 +01:00
Files
archived-doc-ru/reference/mysqlnd/config.xml
2026-01-19 03:26:52 +00:00

457 lines
22 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 9598935f21bc472f22383fb989625f0b22785331 Maintainer: das Status: ready -->
<!-- Reviewed: no -->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="mysqlnd.config">
&reftitle.runtime;
&extension.runtime;
<para>
<table xml:id="mysqlnd.config.options">
<title>Параметры конфигурации встроенного драйвера MySQL</title>
<tgroup cols="4">
<thead>
<row>
<entry>&Name;</entry>
<entry>&Default;</entry>
<entry>&Changeable;</entry>
<entry>&Changelog;</entry>
</row>
</thead>
<tbody xml:id="mysqlnd.config.options.list">
<row>
<entry><link linkend="ini.mysqlnd.collect-statistics">mysqlnd.collect_statistics</link></entry>
<entry>"1"</entry>
<entry><constant>INI_SYSTEM</constant></entry>
<entry/>
</row>
<row>
<entry><link linkend="ini.mysqlnd.collect-memory-statistics">mysqlnd.collect_memory_statistics</link></entry>
<entry>"0"</entry>
<entry><constant>INI_SYSTEM</constant></entry>
<entry/>
</row>
<row>
<entry><link linkend="ini.mysqlnd.debug">mysqlnd.debug</link></entry>
<entry>""</entry>
<entry><constant>INI_SYSTEM</constant></entry>
<entry/>
</row>
<row>
<entry><link linkend="ini.mysqlnd.log-mask">mysqlnd.log_mask</link></entry>
<entry>0</entry>
<entry><constant>INI_ALL</constant></entry>
<entry/>
</row>
<row>
<entry><link linkend="ini.mysqlnd.mempool-default-size">mysqlnd.mempool_default_size</link></entry>
<entry>16000</entry>
<entry><constant>INI_ALL</constant></entry>
<entry/>
</row>
<row>
<entry><link linkend="ini.mysqlnd.net-read-timeout">mysqlnd.net_read_timeout</link></entry>
<entry>""86400""</entry>
<entry><constant>INI_ALL</constant></entry>
<entry>До PHP 7.2.0 значением по умолчанию "31536000", а местом изменения было <constant>INI_SYSTEM</constant></entry>
</row>
<row>
<entry><link linkend="ini.mysqlnd.net-cmd-buffer-size">mysqlnd.net_cmd_buffer_size</link></entry>
<entry>5.3.0 — "2048", 5.3.1 — "4096"</entry>
<entry><constant>INI_SYSTEM</constant></entry>
<entry/>
</row>
<row>
<entry><link linkend="ini.mysqlnd.net-read-buffer-size">mysqlnd.net_read_buffer_size</link></entry>
<entry>"32768"</entry>
<entry><constant>INI_SYSTEM</constant></entry>
<entry/>
</row>
<row>
<entry><link linkend="ini.mysqlnd.sha256-server-public-key">mysqlnd.sha256_server_public_key</link></entry>
<entry>""</entry>
<entry><constant>INI_PERDIR</constant></entry>
<entry/>
</row>
<row>
<entry><link linkend="ini.mysqlnd.trace-alloc">mysqlnd.trace_alloc</link></entry>
<entry>""</entry>
<entry><constant>INI_SYSTEM</constant></entry>
<entry/>
</row>
<row>
<entry><link linkend="ini.mysqlnd.fetch_data_copy">mysqlnd.fetch_data_copy</link></entry>
<entry>0</entry>
<entry><constant>INI_ALL</constant></entry>
<entry>Удалено с PHP 8.1.0</entry>
</row>
</tbody>
</tgroup>
</table>
&ini.php.constants;
</para>
&ini.descriptions.title;
<variablelist>
<varlistentry xml:id="ini.mysqlnd.collect-statistics">
<term>
<parameter>mysqlnd.collect_statistics</parameter>
<type>bool</type>
</term>
<listitem>
<simpara>
Включает сбор различной статистики клиента, доступ к которой можно
получить с помощью <function>mysqli_get_client_stats</function>,
<function>mysqli_get_connection_stats</function>,
и которая отображается
в разделе <literal>mysqlnd</literal> вывода функции
<function>phpinfo</function>.
</simpara>
<simpara>
Этот параметр конфигурации включает всю
<link linkend="mysqlnd.stats">статистику встроенного драйвера
MySQL</link>, кроме относящейся к работе с оперативной памятью.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.mysqlnd.collect-memory-statistics">
<term>
<parameter>mysqlnd.collect_memory_statistics</parameter>
<type>bool</type>
</term>
<listitem>
<simpara>
Включает сбор различной статистики оперативной памяти, доступ к
которой можно получить с помощью <function>mysqli_get_client_stats</function>,
<function>mysqli_get_connection_stats</function>,
и которая отображается
в разделе <literal>mysqlnd</literal> вывода функции
<function>phpinfo</function>.
</simpara>
<simpara>
Этот параметр конфигурации включает всю статистику, относящуюся к
работе с оперативной памятью, в общий набор данных
<link linkend="mysqlnd.stats">статистики встроенного драйвера MySQL</link>.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.mysqlnd.debug">
<term>
<parameter>mysqlnd.debug</parameter> <type>string</type>
</term>
<listitem>
<simpara>
Записывает команды из всех модулей, использующих
<literal>mysqlnd</literal>, в указанный файл с логами.
</simpara>
<simpara>
Формат параметра следующий: <literal>mysqlnd.debug =
"option1[,parameter_option1][:option2[,parameter_option2]]"</literal>.
</simpara>
<simpara>
Возможны нижеуказанные значения для строки форматирования:
</simpara>
<itemizedlist>
<listitem>
<simpara>
A[,file] - добавляет вывод трассировки в указанный файл. Также
каждый раз проверяет успешность записи данных. Это реализовано
путём закрытия и повторного открытия файла (что достаточно медленно).
Даёт гарантию целостности файла с логами в случае возникновения ошибки приложения.
</simpara>
</listitem>
<listitem>
<simpara>
a[,file] - добавляет вывод трассировки в указанный файл.
</simpara>
</listitem>
<listitem>
<simpara>
d - Включает вывод из макроса DBUG_&lt;N&gt; для текущего состояния.
Может быть дополнено списком ключевых слов, чтобы выбрать вывод только
содержащего эти ключевые слова макросов DBUG. Пустой список ключевых слов
подразумевает вывод всех для макросов.
</simpara>
</listitem>
<listitem>
<simpara>
f[,functions] - ограничивает действия отладчика указанным списком функций.
Пустой список функций подразумевает выбор всех функций.
</simpara>
</listitem>
<listitem>
<simpara>
F - помечает вывод каждой строчки отладчика названием исходного файла,
содержащего код, вызвавший вывод.
</simpara>
</listitem>
<listitem>
<simpara>
i - помечает вывод каждой строчки отладчика PID текущего процесса.
</simpara>
</listitem>
<listitem>
<simpara>
L - помечает вывод каждой строчки отладчика названием исходного файла,
вызвавшего вывод, и номером строки в ней.
</simpara>
</listitem>
<listitem>
<simpara>
n - помечает вывод каждой строчки отладчика уровнем вложенности
текущей функции.
</simpara>
</listitem>
<listitem>
<simpara>
o[,file] - сходно с a[,file], но перезаписывает старый файл, а не
дописывает его.
</simpara>
</listitem>
<listitem>
<simpara>
O[,file] - сходно с A[,file] но перезаписывает старый файл, а не
дописывает его.
</simpara>
</listitem>
<listitem>
<simpara>
t[,N] - включает контроль функций во время трассировки.
Максимальный уровень вложенности определён N и по умолчанию равен 200.
</simpara>
</listitem>
<listitem>
<simpara>
x - этот параметр активирует профилирование.
</simpara>
</listitem>
<listitem>
<simpara>
m - отслеживать вызовы, связанные с выделениями и высвобождением памяти.
</simpara>
</listitem>
</itemizedlist>
<simpara>
Пример:
</simpara>
<programlisting>
<![CDATA[
d:t:x:O,/tmp/mysqlnd.trace
]]>
</programlisting>
<note>
<simpara>
Функция доступна только в отладочной сборке PHP.
</simpara>
</note>
<simpara/>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.mysqlnd.log-mask">
<term>
<parameter>mysqlnd.log_mask</parameter>
<type>int</type>
</term>
<listitem>
<simpara>
Определяет, какие запросы будут журналироваться. Значение по умолчанию - 0, что отключает журналирование.
Значение параметра - только целое число, константы PHP использовать нельзя. Например, при значении
48 (16 + 32) в журнал будут записываться медленные запросы, которые либо используют неподходящие индексы
(SERVER_QUERY_NO_GOOD_INDEX_USED = 16), либо не используют их вообще SERVER_QUERY_NO_INDEX_USED = 32).
При значении 2043 (1 + 2 + 8 + ... + 1024) в журнал будут записываться все типы медленных запросов.
</simpara>
<simpara>
Используются следующие типы запросов: 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.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.mysqlnd.mempool-default-size">
<term>
<parameter>mysqlnd.mempool_default_size</parameter>
<type>int</type>
</term>
<listitem>
<simpara>
Default size of the mysqlnd memory pool, which is used by result sets.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.mysqlnd.net-read-timeout">
<term>
<parameter>mysqlnd.net_read_timeout</parameter>
<type>int</type>
</term>
<listitem>
<simpara>
<literal>mysqlnd</literal> и клиентская библиотека MySQL,
<literal>libmysqlclient</literal>, используют разные сетевые API.
<literal>mysqlnd</literal> использует потоки PHP, тогда как
<literal>libmysqlclient</literal> - собственную обёртку над сетевыми вызовами
операционной системы. В PHP по умолчанию выставлено 60-секундное
время ожидания потоков. Этот параметр выставляется в
<filename>php.ini</filename> директивой <literal>default_socket_timeout</literal>.
По умолчанию это относится ко всем потокам, которым не установлено другое значение времени ожидания.
<literal>mysqlnd</literal> не устанавливал других значений, поэтому
подключения долго выполняющихся запросов могут быть отключены после
<literal>default_socket_timeout</literal> секунд с ошибкой
<quote>2006 - MySQL Server has gone away</quote>. Клиентская библиотека MySQL
устанавливает время ожидания по умолчанию равное 24 * 3600 секундам (1 день)
и ждёт возникновения другого времени ожидания, такого как время ожидания TCP/IP.
Теперь <literal>mysqlnd</literal> использует такой же очень долгое время ожидания.
Это значение можно изменить через новую директиву <filename>php.ini</filename> -
<literal>mysqlnd.net_read_timeout</literal>.
<literal>mysqlnd.net_read_timeout</literal> будет использоваться любым
модулем (<literal>ext/mysql</literal>,
<literal>ext/mysqli</literal>, <literal>PDO_MySQL</literal>), использующим
<literal>mysqlnd</literal>. <literal>mysqlnd</literal> указывает
потокам PHP использовать <literal>mysqlnd.net_read_timeout</literal>.
Пожалуйста, обратите внимание, что могут быть небольшие различия между
<literal>MYSQL_OPT_READ_TIMEOUT</literal> в клиентской библиотеке MySQL
и потоках PHP, например, судя по документации, <literal>MYSQL_OPT_READ_TIMEOUT</literal> работает
только для TCP/IP-подключений и, вплоть до MySQL 5.1.2, только под
Windows. Потоки PHP могут не иметь подобных ограничений. В случае сомнений
просьба сверяться с документацией потоков.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.mysqlnd.net-cmd-buffer-size">
<term>
<parameter>mysqlnd.net_cmd_buffer_size</parameter>
<type>int</type>
</term>
<listitem>
<simpara>
<literal>mysqlnd</literal> резервирует внутренний командно-сетевой
буфер размером <literal>mysqlnd.net_cmd_buffer_size</literal>
<filename>php.ini</filename>) байт для каждого соединения. Если команда
клиент-серверного протокола MySQL, например,
<literal>COM_QUERY</literal> (<quote>обычный</quote> запрос), не
умещается в буфер, <literal>mysqlnd</literal> увеличит буфер до размера,
необходимого для отправки команды.
Каждый раз, когда буфер был увеличен, переменная статистики <literal>command_buffer_too_small</literal>
будет увеличена на один.
</simpara>
<simpara>
Если <literal>mysqlnd</literal> приходится увеличивать буфер сверх его
заданного размера в <literal>mysqlnd.net_cmd_buffer_size</literal> байт
для большинства соединений, вам следует обдумать необходимость увеличения
размера по умолчанию, чтобы избежать повторных резерваций буфера.
</simpara>
<simpara>
Размер буфера по умолчанию составляет 4096 байт, что является наименьшим возможным значением.
</simpara>
<simpara>
Это значение также может быть установлено функцией
<literal>mysqli_options(link,
MYSQLI_OPT_NET_CMD_BUFFER_SIZE, size)</literal>.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.mysqlnd.net-read-buffer-size">
<term>
<parameter>mysqlnd.net_read_buffer_size</parameter>
<type>int</type>
</term>
<listitem>
<simpara>
Максимальный размер части данных при считывании, в байтах, при обработке
тела командного пакета MySQL. Клиент-серверный протокол MySQL оборачивает
все свои команды в пакеты. Пакет состоит из небольшого заголовка и тела,
содержащего непосредственно данные команды. Размер тела закодирован в заголовке.
<literal>mysqlnd</literal> считывает тело частями по
<literal>MIN(header.size, mysqlnd.net_read_buffer_size)</literal>
байт. Если размер тела пакета больше, чем
<literal>mysqlnd.net_read_buffer_size</literal> байт,
<literal>mysqlnd</literal> будет вызывать <literal>read()</literal>
несколько раз.
</simpara>
<simpara>
Это значение также может быть установлено функцией
<literal>mysqli_options(link,
MYSQLI_OPT_NET_READ_BUFFER_SIZE, size)</literal>.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.mysqlnd.sha256-server-public-key">
<term>
<parameter>mysqlnd.sha256_server_public_key</parameter>
<type>string</type>
</term>
<listitem>
<simpara>
Данная опция относится к плагину аутентификации SHA-256 и содержит путь к файлу
с публичным ключом RSA MySQL-сервера..
</simpara>
<simpara>
Клиент может как не указывать публичный ключ RSA, указать его с помощью
данной опции, либо установить ключ во время выполнения с помощью функции
<function>mysqli_options</function>. Если публичный ключ RSA не был передан
клиентом, то ключ будет получен в результате стандартной процедуры
аутентификации плагина аутентификации SHA-256.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.mysqlnd.trace-alloc">
<term>
<parameter>mysqlnd.trace_alloc</parameter>
<type>string</type>
</term>
<listitem>
<simpara>
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.mysqlnd.fetch_data_copy">
<term>
<parameter>mysqlnd.fetch_data_copy</parameter>
<type>int</type>
</term>
<listitem>
<simpara>
Принуждает копировать наборы из внутреннего буфера наборов в PHP переменные
вместо использования логики с ссылками и "копированием при записи" по умолчанию.
Смотрите <link linkend="mysqlnd.memory">реализация управления памятью</link>
для получения большей информации.
</simpara>
<simpara>
Копирование результирующих наборов вместо PHP переменных ссылающихся на них
позволяют выделять память для PHP переменных заранее.
В зависимости от пользовательского кода, реальных запросов к базе данных и
размеров их результатов, можно снизить потребление памяти mysqlnd.
</simpara>
<simpara>
Не применяйте, если используется PDO_MySQL. В PDO_MySQL ещё не добавлена поддержка
этого нового режима.
</simpara>
<note>
<simpara>Удалено с PHP 8.1.0</simpara>
</note>
</listitem>
</varlistentry>
</variablelist>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->