Das Verhalten dieser Funktionen wird durch Einstellungen in der php.ini beeinflusst.
| Name | Standard | Veränderbar | Changelog |
|---|---|---|---|
| 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 |
Vor PHP 7.2.0 war der Standardwert "31536000" und die Veränderbarkeit
war INI_SYSTEM
|
| mysqlnd.net_cmd_buffer_size | "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 |
Entfernt seit PHP 8.1.0 |
Hier eine kurze Erklärung der Konfigurationsoptionen:
mysqlnd.collect_statistics
bool
mysqlnd ausgegeben werden.
Diese Konfigurationseinstellung aktiviert alle
Statistiken des MySQL Native Drivers
mit Ausnahme derjenigen, die sich auf die Speicherverwaltung beziehen.
mysqlnd.collect_memory_statistics
bool
mysqlnd ausgegeben werden.
Diese Konfigurationseinstellung aktiviert die Statistiken zur
Speicherverwaltung innerhalb der gesamten
Statistiken des MySQL Native Drivers.
mysqlnd.debug
string
mysqlnd verwenden, in der angegebenen Protokolldatei
auf.
Das Format der Direktive ist mysqlnd.debug =
"option1[,parameter_option1][:option2[,parameter_option2]]".
Folgende Optionen stehen für die Formatzeichenkette zur Verfügung:
d:t:x:O,/tmp/mysqlnd.trace
Hinweis: Dieses Funktionalität steht nur mit einem sogenannten Debug-Build von PHP zur Verfügung.
mysqlnd.log_mask
int
mysqlnd.mempool_default_size
int
mysqlnd.net_read_timeout
int
mysqlnd und die MySQL Client Library
libmysqlclient verwenden unterschiedliche
Netzwerk-APIs. So verwendet mysqlnd PHP-Streams,
während libmysqlclient den eigenen Wrapper für die
Netzwerkaufrufe der Betriebssystemebene verwendet. PHP setzt für das
Lesen von Streams standardmäßig ein Zeitlimit von 60s. Dies wird in der
php.ini über
default_socket_timeout eingestellt. Diese Vorgabe
gilt für alle Streams, die keinen anderen Wert für das Zeitlimit setzen.
mysqlnd setzt keinen anderen Wert, weshalb
Verbindungen von lang laufenden Abfragen nach
default_socket_timeout Sekunden getrennt werden
können, was die Fehlermeldung 2006 - MySQL Server has gone awayzur Folge hat. Die MySQL Client Library setzt standardmäßig ein Zeitlimit von 24 * 3600 Sekunden (1 Tag) und wartet auf andere Zeitlimits, z. B. TCP/IP-Zeitlimits.
mysqlnd benutzt
nun das gleiche sehr lange Zeitlimit. Der Wert ist über eine neue
Einstellung in der php.ini konfigurierbar:
mysqlnd.net_read_timeout.
mysqlnd.net_read_timeout wird von jeder Erweiterung
verwendet, die mysqlnd verwendet
(ext/mysql, ext/mysqli und
PDO_MySQL). mysqlnd weist
PHP-Streams an, mysqlnd.net_read_timeout zu
verwenden. Zu beachten ist, dass es subtile Unterschiede zwischen
MYSQL_OPT_READ_TIMEOUT aus der MySQL Client Library
und PHP-Streams geben kann. Zum Beispiel gilt
MYSQL_OPT_READ_TIMEOUT laut Dokumentation nur für
TCP/IP-Verbindungen und, vor MySQL 5.1.2, nur unter Windows. PHP-Streams
haben diese Einschränkung möglicherweise nicht. Im Zweifelsfall sollte
die Dokumentation von Streams zu Rate gezogen werden.
mysqlnd.net_cmd_buffer_size
int
mysqlnd weist jeder Verbindung einen internen
Befehls-/Netzwerkpuffer von
mysqlnd.net_cmd_buffer_size Bytes zu (in der
php.ini). Wenn ein Befehl des
MySQL-Client-Server-Protokolls, zum Beispiel
COM_QUERY (normaleAbfrage), nicht in den Puffer passt, vergrößert
mysqlnd den Puffer auf
die für das Senden des Befehls erforderliche Größe. Jedes Mal, wenn der
Puffer für eine Verbindung erweitert wird, wird
command_buffer_too_small um eins erhöht.
Wenn mysqlnd den Puffer bei fast jeder Verbindung
über seine anfängliche Größe von
mysqlnd.net_cmd_buffer_size Bytes hinaus vergrößern
muss, sollten in Betracht gezogen werden, die Standardgröße zu erhöhen,
um Neuzuweisungen zu vermeiden.
Die voreingestellte Puffergröße beträgt 4096 Bytes, was der
kleinstmögliche Wert ist.
Der Wert kann auch mittels mysqli_options(link,
MYSQLI_OPT_NET_CMD_BUFFER_SIZE, size) gesetzt werden.
mysqlnd.net_read_buffer_size
int
mysqlnd liest den Körper in Stücken von
MIN(header.size, mysqlnd.net_read_buffer_size) Bytes.
Wenn ein Paketkörper größer als
mysqlnd.net_read_buffer_size Bytes ist, muss
mysqlnd den Befehl read() mehrfach
aufrufen.
Der Wert kann auch mittels mysqli_options(link,
MYSQLI_OPT_NET_READ_BUFFER_SIZE, size) gesetzt werden.
mysqlnd.sha256_server_public_key
string
mysqlnd.trace_alloc
string
mysqlnd.fetch_data_copy
int
Hinweis: Diese Einstellung wurde in PHP 8.1.0 entfernt.