Introducción

El complemento de multiplexación de mysqlnd (mysqlnd_mux) multiplexa las conexiones de MySQL establecidas por todas las extensiones de MySQL para PHP que utilizan el controlador nativo de MySQL (mysqlnd) para PHP.

El controlador nativo de MySQL para PHP introduce una API en C interna para complementos, tales como el complemento de multiplexación de conexiones, la cual puede ampliar la funcionalidad de mysqlnd. Véase mysqlnd para detalles adicionales sobre sus beneficios sobre la Bliblioteca Cliente de MySQL libmysqlclient.

Los complementos de mysqlnd como mysqlnd_mux operan, en la mayor parte, de forma transparente desde la perspectiva del usuario. El complemento de multiplexación de conexiones admite todas las aplicaciones de PHP y todas las extensiones de MySQL para PHP. No cambia las APIs existentes. Por lo tanto, puede usarse fácilmente con las aplicaciones de PHP existentes.

Nota:

Este complemento es una pruebas de conceptos. Todas las características están en un estado primario. El complemento aún no gestiona todos los tipos de consultas. Por lo tanto, por el momento no se puede usar como susutituto.

Por favor, no use esta versión en entornos de producción.

Características principales

Las características principales de mysqlnd_mux son las siguientes:

  • Transparente y por lo tanto fácil de usar:

    • Admite todas las extensiones de MySQL para PHP.

    • Se necesitan pocos o ninún cambio en las aplicaciones, dependiendo del escenario de uso requerido.

  • Reduce la carga del servidor y la latencia del establecimiento de conexiones:

    • Abre menos conexiones al servidor MySQL.

    • Menos conexiones a MySQL significa menos trabajo para el servidor MySQL. En un entorno cliente-servidor, a menudo es más difícil mejorar el rendimiento del servidor que el del cliente. La multiplexación ayuda con la mejora del rendimiento horizontal (por cliente).

    • El agrupamiento ahorra tiempo de conexión.

    • Conexión multiplexada: múltiples gestores de usuario comparten la misma conexión de red. Una vez abierta, una conexión de red es almacenada en caché y compartida entre múltiples gestores de usuario. Hay una relación 1:n entre la conexión interna de red y los gestores de conexión de usuario.

    • Conexión persistente: una conexión de red se mantiene abierta hasta el final de una petición web, si el modelo de desarrollo de PHP lo permite. Así, peticioines web subsiguientes pueden reutilizar una conexión previamente abierta. Al igual que otros recursos, las conexiones de red están limitadas al ámbito de un proceso. Por lo tanto, pueden ser reutilizadas para todas las peticiones web servidas por un proceso.

Limitaciones

La prueba de conceptos no admite consultas no almacenadas en búfer, sentencias preparadas, ni consultas asíncronas.

El agrupamiento de conexiones utiliza una combinación de método de transporte y nombre de host como claves. Como consecuencia, dos conexiones al mismo host que usen el mismo método de transporte (TCP/IP, socket Unix, tubería con nombre de Windows) serán vinculadas a la misma conexión agrupada incluso si el nombre de usuario y la contraseña difieren. Se han de tener las posibles implicaciones de segurirdad.

La prueba de conceptos es incrédula respecto a transacciones. No sabe nada de transacciones SQL.

Nota:

Las aplicaciones debería tener en cuenta de las consecuencias de compartir conexiones.

Sobre el nombre mysqlnd_mux

La abreviatura mysqlnd_mux singnifica complemento de multiplexación de conexiones de mysqlnd.