Las conexiones persistentes son una buena idea solo cuando se tarda (relativamente) mucho tiempo en conectarse a su base de datos. Hoy en día ese casi nunca es el caso. El mayor inconveniente de las conexiones persistentes es que limita la cantidad de usuarios que puede tener navegando por su sitio: si MySQL está configurado para permitir solo 10 conexiones simultáneas a la vez, cuando una undécima persona intente navegar por su sitio, no funcionará para ellos. .
PDO no gestiona la persistencia. El controlador MySQL lo hace. Reutiliza las conexiones cuando a) están disponibles y el host / usuario / contraseña / base de datos coinciden. Si hay algún cambio, no reutilizará una conexión. El mejor efecto neto es que estas conexiones que tiene se iniciarán y detendrán tan a menudo porque tiene diferentes usuarios en el sitio y hacerlos persistentes no sirve de nada.
La clave para entender sobre las conexiones persistentes es que NO debe usarlas en la mayoría de las aplicaciones web. Suenan atractivos pero son peligrosos y prácticamente inútiles.
Estoy seguro de que hay otros hilos en esto, pero una conexión persistente es peligrosa porque persiste entre las solicitudes. Si, por ejemplo, bloquea una tabla durante una solicitud y luego no se desbloquea, esa tabla permanecerá bloqueada indefinidamente. Las conexiones persistentes también son prácticamente inútiles para el 99% de sus aplicaciones porque no tiene forma de saber si se usará la misma conexión entre diferentes solicitudes. Cada hilo web tendrá su propio conjunto de conexiones persistentes y no tiene forma de controlar qué hilo manejará qué solicitudes.
La biblioteca de MySQL procesal de PHP tiene una característica por la cual las llamadas posteriores a mysql_connect devolverán el mismo enlace, en lugar de abrir una conexión diferente (como cabría esperar). Esto no tiene nada que ver con conexiones persistentes y es específico de la biblioteca mysql. PDO no exhibe tal comportamiento
Enlace de recursos: enlace
En general, podría usar esto como un "conjunto de reglas" aproximado ::
SÍ , use conexiones persistentes, si:
NO , no use conexiones persistentes, si:
Su aplicación solo necesita acceder a la base de datos 100 veces por hora.
Tienes muchos, muchos servidores web accediendo a un servidor de base de datos
El uso de conexiones persistentes es considerablemente más rápido, especialmente si está accediendo a la base de datos a través de una red. No hace mucha diferencia si la base de datos se ejecuta en la misma máquina, pero sigue siendo un poco más rápida. Sin embargo, como su nombre lo indica, la conexión es persistente, es decir, permanece abierta, incluso si no se usa.
El problema con eso es que, en la "configuración predeterminada", MySQL solo permite 1000 "canales abiertos" paralelos. Después de eso, se rechazan las nuevas conexiones (puede modificar esta configuración). Entonces, si tiene, digamos, 20 servidores web con cada 100 clientes en ellos, y cada uno de ellos tiene solo un acceso a la página por hora, las matemáticas simples le mostrarán que necesitará 2000 conexiones paralelas a la base de datos. Eso no funcionará.
Ergo: Úselo solo para aplicaciones con muchas solicitudes.