Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.
| Nom | Défaut | Modifiable | Historique |
|---|---|---|---|
| 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 |
Avant PHP 7.2.0 la valeur par défaut était "31536000"
et la variabilité était 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 |
Supprimé à partir de PHP 8.1.0 |
Voici un éclaircissement sur l'utilisation des directives de configuration.
mysqlnd.collect_statistics
bool
mysqlnd de la sortie de la fonction
phpinfo().
Ce paramètre active toutes
les statistiques de MySQL Native Driver
sauf celles relatives à la gestion de la mémoire.
mysqlnd.collect_memory_statistics
bool
mysqlnd de la sortie de la fonction
phpinfo().
Ce paramètre active les statistiques de gestion de la mémoire parmi
les statistiques fournies par MySQL
Native Driver.
mysqlnd.debug string
mysqlnd.
Le format de cette directive est mysqlnd.debug =
"option1[,parameter_option1][:option2[,parameter_option2]]".
Les options de formatage des chaines sont les suivantes:
d:t:x:O,/tmp/mysqlnd.trace
Note: Cette caractéristique n'est disponible que pour les versions debug de PHP.
mysqlnd.log_mask
int
mysqlnd.mempool_default_size
int
mysqlnd.net_read_timeout
int
mysqlnd et la MySQL Client Library,
libmysqlclient utilise des API réseau différentes.
mysqlnd utilise les flux PHP, alors que
libmysqlclient utilise sa propre implémentation basée sur
le système. PHP, par défaut, utilise un timeout en lecture de 60s. Ceci
en utilisant le paramètre de php.ini,
default_socket_timeout. Ceci s'applique à tous les flux
qui ne précisent pas de timeout par défaut.
mysqlnd n'affecte aucune autre valeur et donc des requêtes
longues peuvent se voir déconnectées après
default_socket_timeout secondes avec comme résultat
un message d'erreur 2006 - MySQL Server has gone away. La MySQL Client Library affecte un timeout par défaut de 24 * 3600 secondes (1 jour) et attend les autres timeout, comme ceux de TCP/IP.
mysqlnd utilise maintenant le même timeout très long.
La valeur est configurable via le paramètre php.ini
mysqlnd.net_read_timeout.
mysqlnd.net_read_timeout est donc utilisé par toute extension
(ext/mysql, ext/mysqli,
PDO_MySQL) qui se repose sur
mysqlnd. mysqlnd indique aux flux PHP d'utiliser
mysqlnd.net_read_timeout. Notez qu'il peut y avoir des différences
subtiles entre
MYSQL_OPT_READ_TIMEOUT de la MySQL Client Library et les flux
PHP, par exemple MYSQL_OPT_READ_TIMEOUT est dite fonctionnelle
uniquement avec des connexions TCP/IP et, avant MySQL 5.1.2, seulement sous Windows.
Les flux PHP, eux, n'ont pas cette limite. Voyez la documentation des flux en cas
de doute.
mysqlnd.net_cmd_buffer_size
int
mysqlnd alloue un buffer interne pour le réseau d'une taille
de mysqlnd.net_cmd_buffer_size (dans
php.ini) octets pour chaque connexion. Si une commande du
protocole MySQL Client Server, par exemple,
COM_QUERY (requête normale), ne rentre pas dans le buffer,
mysqlnd va agrandir celui-ci à la taille requise.
A chaque fois que le buffer est agrandi pour une connexion,
command_buffer_too_small va être incrémenté de un.
Si mysqlnd doit agrandir le buffer au-delà de sa taille initiale de
mysqlnd.net_cmd_buffer_size octets pour presque toutes les connexions,
vous devriez alors augmenter cette taille par défaut afin d'éviter les ré-allocations.
La taille par défaut du buffer est de 4096 octets.
La valeur peut aussi être changée au moyen de mysqli_options(link,
MYSQLI_OPT_NET_CMD_BUFFER_SIZE, size).
mysqlnd.net_read_buffer_size
int
mysqlnd lit le corps sous forme de segments
de MIN(header.size, mysqlnd.net_read_buffer_size)
octets. Si le corps d'un paquet est plus grand que
mysqlnd.net_read_buffer_size octets,
mysqlnd doit alors appeler read()
plusieurs fois.
La valeur peut aussi être changée au moyen de 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
Note: Supprimé à partir de PHP 8.1.0