El comportamiento de estas funciones se ve afectado por la configuración de php.ini.
Nombre | Por defecto | Cambiable | Historial de cambios |
---|---|---|---|
mysqlnd.collect_statistics | "1" | PHP_INI_SYSTEM | Disponible desde PHP 5.3.0. |
mysqlnd.collect_memory_statistics | "0" | PHP_INI_SYSTEM | Available since PHP 5.3.0. |
mysqlnd.debug | "0" | PHP_INI_SYSTEM | Disponible desde PHP 5.3.0. |
mysqlnd.log_mask | 0 | PHP_INI_ALL | Disponible desde PHP 5.3.0 |
mysqlnd.mempool_default_size | 16000 | PHP_INI_ALL | Disponible desde PHP 5.3.3 |
mysqlnd.net_read_timeout | "31536000" | PHP_INI_SYSTEM | Disponible desde PHP 5.3.0. |
mysqlnd.net_cmd_buffer_size | 5.3.0 - "2048", 5.3.1 - "4096" | PHP_INI_SYSTEM | Disponible desde PHP 5.3.0. |
mysqlnd.net_read_buffer_size | "32768" | PHP_INI_SYSTEM | Disponible desde PHP 5.3.0. |
mysqlnd.sha256_server_public_key | "" | PHP_INI_PERDIR | Disponible desde PHP 5.5.0. |
He aquí una breve explicación de las directivas de configuración.
mysqlnd.collect_statistics
boolean
Habilita la recopilación de estadísticas de diversos clientes a las cuales se puede acceder a través de mysqli_get_client_stats(), mysqli_get_connection_stats(), mysqli_get_cache_stats(), y que también se muestran en la sección mysqlnd de la salida de la función phpinfo().
Este ajuste de configuración habilita todas las estadísticas del Controlador Nativo de MySQL excepto aquellas relacionadas con la gestión de memoria.
mysqlnd.collect_memory_statistics
boolean
Habilita la recopilación de diversas estadísticas de memoria a las que se puede acceder a través de mysqli_get_client_stats(), mysqli_get_connection_stats(), mysqli_get_cache_stats(), y que también se muestran en la sección mysqlnd de la salida de la función phpinfo().
Este ajuste de configuración habilita las estadísticas de gestión de memoria dentro del conjunto total de estadísticas del Controlador Nativo de MySQL.
mysqlnd.debug
string
Registra las comunicaciones de todas las extensiones que usan mysqlnd al fichero de registros especificado.
El formato de la directiva es mysqlnd.debug = "opción1[,parámetro_opción1][:opción2[,parámetro_opción2]]".
Las opciones para la cadena de formato son las siguientes:
A[,fichero] - Añade salidas de seguimiento al fichero especificado. También se asegura de que los datos son escritos después de cada escritura. Esto se lleva a cabo cerrando y reabriento el fichero de seguimiento (esto es lento). Ayuda a asegurarse de tener un fichero de seguimiento completo cuando la aplicación falla.
a[,fichero] - Añade salidas de seguimiento al fichero especificado.
d - Habilita la salida desde las macros DBUG_<N> para el estado actual. Se le puede añadir una lista de palabras clave las cuales seleccionarán la salida solamente para las macros DBUG con esa palabra clave. Una lista vacía de palabras clave implica la salida de todas las macros.
f[,funciones] - Limita las acciones del depurador para la lista especificada de funciones. Una lista de funciones vacía implica que se seleccionarán todas las funciones.
F - Marca cada línea de salida del depurador con el nombre del fichero fuente que contiene la macro que causa la salida.
i - Marca cada línea de salida del depurador con el PID del proceso actual.
L - Marca cada línea de salida de depurador con el número de línea del fichero fuente de la macro que causa la salida.
n - Marca caa línea de salida del depurador con el nivel de anidamiento de la función actual
o[,fichero] - Similar a a[,fichero] excepto que sobrescribe el fichero antiguo, por lo que no realiza la agregación.
O[,fichero] - Similar a A[,fichero] excepto que sobrescribe el fichero antiguo, por lo que no realiza la agregación.
t[,N] - Habilita el rastreo del flujo de control de la función. El nivel de anidamiento máximo está especificado por N, y el valor predeterminado es 200.
x - Esta opción activa el perfilamiento.
Ejemplo:
d:t:x:O,/tmp/mysqlnd.trace
Nota:
Esta característica solamente está disponible con una construcción de depuración de PHP. Funciona en Microsoft Windows si se utiliza una construcción de depuración de PHP y PHP se ha construido usando la verseión 9 de Microsoft Visual C o superior.
mysqlnd.log_mask
integer
Define qué consultas serán registradas. El valor predeterminado es 0, el cual deshabilita el registro. Se define usando un entero, y no una constante de PHP. Por ejemplo, un valor de 48 (16 + 32) registrará las consultas lentas que usan un 'índice no bueno' (SERVER_QUERY_NO_GOOD_INDEX_USED = 16) o no usan ningún índice en absoluto (SERVER_QUERY_NO_INDEX_USED = 32). Un valor de 2043 (1 + 2 + 8 + ... + 1024) registrará todos los tipos de consultas lentas.
Los tipos son los siguientes: 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.
mysqlnd.mempool_default_size
integer
Tamaño predeterminado de la caché de memoria de mysqlnd, el cual es usado por los conjuntos de resultados.
mysqlnd.net_read_timeout
integer
mysqlnd y la Biblioteca Cliente de MySQL, libmysql, utilizan diferentes APIs de red. mysqlnd utiliza flujos de PHP, mientras que libmysql utiliza su propia envoltura sobre las llamadas a la red a nivel de operación. PHP, por defecto, establece un tiempo de espera de lectura de 60s para los flujos. Esto se establece mediante php.ini, default_socket_timeout. Este valor predeterminado se aplica a todos los flujos que no establecen otro valor de tiempo de espera. mysqlnd no establece ningún otro valor y por lo tanto las conexiones de consultas que se ejecutan durante mucho tiempo pueden ser desconectadas después de default_socket_timeout segundos, resultando en un mensaje de error "2006 - MySQL Server has gone away". La Biblioteca Cliente de MySQL establece un tiempo de espera predeterminado de 365 * 24 * 3600 segundos (1 año) y espera a que sucedan otros tiempos de espera, como los tiempos de espera de TCP/IP. Ahora mysqlnd utiliza el mismo tiempo de espera. El valor se puede configurar a través de un nuevo ajuste de php.ini: mysqlnd.net_read_timeout. mysqlnd.net_read_timeout es utilizado por cualquier extensión (ext/mysql, ext/mysqli, PDO_MySQL) que use mysqlnd. mysqlnd le indica a los flujos de PHP que utilicen mysqlnd.net_read_timeout. Observe que puede haber sútiles diferencias entre MYSQL_OPT_READ_TIMEOUT de la Biblioteca Cliente de MySQL y los flujos de PHP, por ejemplo MYSQL_OPT_READ_TIMEOUT está documentado para funcionar sólo con conexiones TCP/IP y, antes de MySQL 5.1.2, sólo con Windows. Los flujos de PHP pueden no tener esta limitación. Compruebe la documentación sobre los flujos si tiene alguna duda.
mysqlnd.net_cmd_buffer_size
long
mysqlnd asigna un buffer de comandos/red interno de mysqlnd.net_cmd_buffer_size (en php.ini) bytes para cada conexión. Si un comando del protocolo Cliente Servidor de MySQL, por ejemplo, COM_QUERY (consulta "normal"), no se ajusta al buffer, mysqlnd aumentará el buffer lo que sea necesario para enviar el comando. Siempre que el buffer se extienda para una conexión, command_buffer_too_small será incrementado en uno.
Si mysqlnd tiene que aumentar el buffer más allá de su tamaño inicial de mysqlnd.net_cmd_buffer_size bytes para casi todas las conexiones, se debería considerar aumentar el tamaño predeterminado para evitar reasignaciones.
El tamaño predeterminado del buffer es de 2048 bytes en PHP 5.3.0. En versiones posteriores, el tamaño predeterminado es de 4096. Se puede cambiar el valor predeterminado a través de php.ini estableciendo mysqlnd.net_cmd_buffer_size o usando mysqli_options(MYSQLI_OPT_NET_CMD_BUFFER_SIZE, int tamaño).
Se recomienda establecer el tamaño de buffer a no menos de 4096 bytes debido a que mysqlnd también lo utiliza al leer ciertos paquetes de comunicación desde MySQL. En PHP 5.3.0, mysqlnd no aumentará el buffer si MySQL envía un paquete que es más grande que el tamaño actual del buffer. Como consecuencia, mysqlnd no es capaz de decodificar el paquete y la aplicación cliente obtendrá un error. Solamente hay dos situacioines en las que un paquete es más grande que los 2048 bytes predeterminados de mysqlnd.net_cmd_buffer_size en PHP 5.3.0: el paquete transporta un mensaje de error muy grande, o el paquete contiene los metadatos de columnas de COM_LIST_FIELD (mysql_list_fields()) y los metadatos provienen de una columna de cadena con un valor predeterminado muy grande (>1900 bytes).
A partir de PHP 5.3.2, mysqlnd no permite establecer buffers menores que 4096 bytes.
El valor también se puede establecer usando mysqli_options(enlace, MYSQLI_OPT_NET_CMD_BUFFER_SIZE, tamaño).
mysqlnd.net_read_buffer_size
long
Tamaño máximo del trozo de lectura en bytes cuando se lee el cuerpo de un paqute de comando de MySQL. El protocolo cliente servidor de MySQL encapsulta todos sus comandos en paquetes. Los paquetes consisten en una pequeña cabecera y un cuerpo con la carga útil real. El tamaño del cuerpo es codificado en la cabecera. mysqlnd lee el cuerpo en trozos de MIN(tamaño.cabecera, mysqlnd.net_read_buffer_size) bytes. Si un cuerpo de un paquete es mayor que mysqlnd.net_read_buffer_size bytes, mysqlnd tiene que llamar a read() varias veces.
El valor también se puede establecer usando mysqli_options(enlace, MYSQLI_OPT_NET_READ_BUFFER_SIZE, tamaño).
mysqlnd.sha256_server_public_key
string
Relacionada con el Complemento de Autenticación SHA-256. El fichero con la clave pública RSA del servidor de MySQL.
Los clientes pueden omitir la configuración de una clave pública RSA, especificar la clave a través de este ajuste de configuración de PHP, o establecer la clave en tiempo de ejecución usando mysqli_options(). Si el cliente no proporciona un fichero de clave pública RSA, entonces la clave será intercambiada como parte del procedimiento de autenticación del Complemento de Autenticación SHA-256.