sql >> Base de Datos >  >> RDS >> Mysql

Agrupación de conexiones vs conexión persistente mysqli

En realidad, los términos agrupación de conexiones y conexión persistente referirse a lo mismo en el caso de mysqli en PHP.

Conexión persistente en este caso se refiere a la conexión MySQL abierta desde el script PHP que permanece abierto después de que el script haya terminado de ejecutarse, para ser utilizado nuevamente en algunas ejecuciones posteriores.

Agrupación de conexiones significa que hay un conjunto de conexiones persistentes mantenidas por PHP. Se otorga una conexión inactiva de este grupo al script PHP que desea conectarse a MySQL y se devuelve al grupo cuando finaliza el script.

Puede preguntarse por qué necesitamos el grupo de conexiones MySQL, ¿por qué no usamos una sola conexión persistente para todos los scripts?

Hay dos razones para esto:

  • PHP crea un grupo de conexiones MySQL basado en host/port/username/password usó. Si un script quiere conectarse a MySQL con algún host/port/username/password combinación, PHP busca una conexión persistente inactiva que tenga los mismos valores. Si no se encuentra, se crea una nueva conexión persistente con este host/port/username/password combinación. Por lo tanto, necesitamos al menos tantas conexiones persistentes diferentes como host/port/username/password diferentes. valores utilizados por todos los scripts.
  • No puede ejecutar dos comandos SQL en una conexión MySQL al mismo tiempo. Esto puede suceder cuando dos scripts PHP se ejecutan simultáneamente. Cuando dos scripts quieren comunicarse con MySQL al mismo tiempo, se crean dos conexiones MySQL persistentes. El número de conexiones persistentes en el grupo es igual al último número máximo de scripts PHP paralelos ejecutados, o igual al límite superior establecido en php.ini .

Aviso importante:

Los grupos de conexiones de MySQL (y cualquier otro grupo de conexiones) solo pueden existir si PHP se ejecuta como un complemento de servidor web . Los grupos no funcionan cuando funcionan en modo cgi rápido o de cualquier otra forma cuando el ejecutable de PHP finaliza después de la ejecución del script.

Editar:la agrupación de conexiones MySQL se puede usar en el modo cgi rápido de PHP si el servidor web está configurado para reutilizar un proceso cgi rápido de PHP para múltiples solicitudes. Si el proceso PHP fast-cgi está configurado para salir después de atender una solicitud, todas sus conexiones MySQL están cerradas.