El comportamiento de estas funciones es afectado por la configuración en el archivo php.ini.
| Nombre | Por defecto | Cambiable | Historial de cambios |
|---|---|---|---|
| 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 |
Antes de PHP 7.2.0 el valor por omisión era "31536000"
y la variabilidad era 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 |
Eliminado a partir de PHP 8.1.0 |
Aquí hay una aclaración sobre el uso de las directivas de configuración.
mysqlnd.collect_statistics
bool
mysqlnd de la salida de la función
phpinfo().
Este parámetro activa todas
las estadísticas de MySQL Native Driver
excepto las relativas a la gestión de la memoria.
mysqlnd.collect_memory_statistics
bool
mysqlnd de la salida de la función
phpinfo().
Este parámetro activa las estadísticas de gestión de la memoria entre
las estadísticas proporcionadas por MySQL
Native Driver.
mysqlnd.debug string
mysqlnd.
El formato de esta directiva es mysqlnd.debug =
"option1[,parameter_option1][:option2[,parameter_option2]]".
Las opciones de formato de strings son las siguientes:
d:t:x:O,/tmp/mysqlnd.trace
Nota: Esta característica solo está disponible para las versiones de depuración de PHP.
mysqlnd.log_mask
int
mysqlnd.mempool_default_size
int
mysqlnd.net_read_timeout
int
mysqlnd y la MySQL Client Library,
libmysqlclient utilizan API de red diferentes.
mysqlnd utiliza los flujos PHP, mientras que
libmysqlclient utiliza su propia implementación basada en
el sistema. PHP, por omisión, utiliza un timeout de lectura de 60s. Esto
utilizando el parámetro de php.ini,
default_socket_timeout. Esto se aplica a todos los flujos
que no especifican un timeout por omisión.
mysqlnd no afecta ningún otro valor y por lo tanto las consultas
largas pueden verse desconectadas después
de default_socket_timeout segundos con el resultado
de un mensaje de error 2006 - MySQL Server has gone away. La MySQL Client Library afecta un timeout por omisión de 24 * 3600 segundos (1 día) y espera otros timeouts, como los de TCP/IP.
mysqlnd utiliza ahora el mismo timeout muy largo.
El valor es configurable mediante el parámetro php.ini
mysqlnd.net_read_timeout.
mysqlnd.net_read_timeout es por lo tanto utilizado por cualquier extensión
(ext/mysql, ext/mysqli,
PDO_MySQL) que se basa en
mysqlnd. mysqlnd indica a los flujos PHP utilizar
mysqlnd.net_read_timeout. Tenga en cuenta que puede haber diferencias
sutiles entre
MYSQL_OPT_READ_TIMEOUT de la MySQL Client Library y los flujos
PHP, por ejemplo MYSQL_OPT_READ_TIMEOUT se dice funcional
únicamente con conexiones TCP/IP y, antes de MySQL 5.1.2, solo en Windows.
Los flujos PHP, ellos, no tienen esta limitación. Consulte la documentación de los flujos en caso de duda.
mysqlnd.net_cmd_buffer_size
int
mysqlnd asigna un buffer interno para la red de un tamaño
de mysqlnd.net_cmd_buffer_size (en
php.ini) bytes para cada conexión. Si una orden del
protocolo MySQL Client Server, por ejemplo,
COM_QUERY (consulta normal), no cabe en el buffer,
mysqlnd aumentará aquel a la tamaño requerido.
Cada vez que el buffer es aumentado para una conexión,
command_buffer_too_small será incrementado en uno.
Si mysqlnd debe aumentar el buffer más allá de su tamaño inicial de
mysqlnd.net_cmd_buffer_size bytes para casi todas las conexiones,
entonces debería aumentar este tamaño por omisión para evitar las reasignaciones.
El tamaño por omisión del buffer es de 4096 bytes.
El valor también puede ser cambiado mediante mysqli_options(link,
MYSQLI_OPT_NET_CMD_BUFFER_SIZE, size).
mysqlnd.net_read_buffer_size
int
mysqlnd lee el cuerpo en forma de segmentos
de MIN(header.size, mysqlnd.net_read_buffer_size)
bytes. Si el cuerpo de un paquete es más grande que
mysqlnd.net_read_buffer_size bytes,
mysqlnd debe entonces llamar a read()
varias veces.
El valor también puede ser cambiado mediante 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
Nota: Eliminado a partir de PHP 8.1.0