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 // Recomendado como alternativa, compila con mysqlnd a partir de PHP 5.4 $ ./configure --with-mysqli --with-pdo-mysql --with-mysql // 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 | Sí | 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 |
PHP 5.4 y superior; compilación predeterminada (para todas las extensiones de MySQL) | Sí | No |
PHP 5.3; compilación predeterminada (para todas las extensiones de MySQL) | No | Sí |
Soporte para el protocolo de compresión | Sí (5.3.1+) | Sí |
Soporte para SSL | Sí (5.3.3+) | Sí |
Soporte para tubería con nombre | Sí (5.3.4+) | Sí |
No bloqueo, consultas asíncronas | Sí | No |
Estadísticas de rendimiento | Sí | No |
LOAD LOCAL INFILE respecto a la directiva open_basedir | Sí | No |
Usa el sistema de gestión de memoria nativo de PHP (p.ej., cumple con los límites de memoria de PHP) | Sí | No |
Devuelve columnas numéricas como valores de tipo double (COM_QUERY) | Sí | No |
Devuelve columnas númericas como valores de tipo string (COM_QUERY) | Sí | Sí |
API de complementos | Sí | 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 |