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 chaĂźnes 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 utilisent 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. à noter : 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. Voir 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Ă© d'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,
il est recommandé d'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