International PHP Conference 2015

Elegir una biblioteca

Las extensiones de PHP mysqli, PDO_MySQL y mysql son envolturas ligeras sobre una biblioteca cliente en C. Las extensiones pueden usar la biblioteca mysqlnd o la biblioteca libmysqlclient. Elegir una biblioteca es una decisión que se ha de tomar durante la compilación.

La biblioteca mysqlnd es parte de la distribrución de PHP desde la versión 5.3.0. Ofrece características como conexiones inactivas y caché de consultas, características que no están disponibles con libmysqlclient, por lo que se recomienda encarecedamente usar la biblioteca mysqlnd interna. Véase la documentación de mysqlnd para detalles adicionales y una lista de las características y funcionalidades que ofrece.

Ejemplo #1 Comandos de configuración para usar mysqlnd o libmysqlclient

// Recomendado, compila con mysqlnd
$ ./configure --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql=mysqlnd

// No recomendado, compila con libmysqlclient
$ ./configure --with-mysqli=/ruta/a/mysql_config --with-pdo-mysql=/ruta/a/mysql_config --with-mysql=/ruta/a/mysql_config

Comparación de las características de las bibliotecas

Se recomienda usar la biblioteca mysqlnd en lugar de la biblioteca Cliente Servidor de MySQL (libmysqlclient). Ambas bibliotecas están soportadas y se mejoran constantemente.

  Controlador Nativo de MySQL (mysqlnd) Biblioteca Cliente Servidor de MySQL (libmysqlclient)
Parte de la distribución de PHP No
Versión de PHP donde se introdujo 5.3.0 N/A
Licencia Licencia PHP 3.01 Licencia Dual
Estado de desarrollo Activo Activo
Ciclo de vida Fin no anunciado Fin no anunciado
Compilación predeterminada en PHP 5.4 (para todas las extensiones de MySQL) No
Compilación predeterminada en PHP 5.3 (para todas las extensiones de MySQL) No
Soporte para protocolo de compresión Sí (5.3.1+)
Soporte para SSL Sí (5.3.3+)
Soporte para tubería con nombre Sí (5.3.4+)
No bloqueo, consultas asíncronas No
Estadísticas de rendimiento No
LOAD LOCAL INFILE respecto a la directiva open_basedir No
Usa el sistema de gestión de memoria nativo de PHP (p.ej., cumple con los límites de memoria de PHP) No
Devuelve columnas numéricas como valores de tipo double (COM_QUERY) No
Devuelve columnas númericas como valores de tipo string (COM_QUERY)
API de complementos Limitada
Separación de lectura/escritura para la Replicación de MySQL Sí, con complemento No
Equilibrado de carga Sí, con complemento No
Tolerancia a fallos Sí, con complemento No
Conexiones inactivas Sí, con complemento No
Caché de consultas Sí, con complemento No
Manipulación transparente de consultas (p.ej., auto-EXPLAIN o monitorización) Sí, con complemento No
add a note add a note

User Contributed Notes 1 note

up
-4
siguza at siguza dot net dot IGNORETHIS
7 months ago
If you're using named pipes under Windows, you should NOT use mysqlnd.
Tested with PHP 5.6.4, libmysqlclient gave me results of about 20ms on a page with 50 queries while mysqlnd was over 3000ms!
To Top