- Desde
- 30 Sep 2004
- Mensajes
- 453
Como todos sabeis existe en el fichero de configuración el siguiente parámetro:
¿Que son ?
Las conexiones persistentes son enlaces que no se cierran cuando termina la ejecución del archivo de comandos. Cuando se pide una conexión persistente, PHP comprueba si hay ya una conexión persistente idéntica (que permanecía abierta desde antes) - y si existe, la usa. Si no existe, crea un enlace. Una conexión 'idéntica' es una conexión que se abrió hacia el mismo "host", con el mismo nombre de usuario y la misma contraseña (donde sea aplicable).
¿ en que nos beneficia ?
La respuesta aqui es extremadamente simple -- eficiencia. Las conexiones persistentes son buenas si las cabeceras de control para crear un enlace a tu servidor SQL es alta. Que estas cabeceras sean o no realmente altas depende de muchos factores. Como, qué clase de base de datos es, si esta o no situada en el mismo ordenador que el servidor web, cómo está de cargada la máquina donde se encuentre el servidor SQL, y otras así. El hecho fundamental es que si la cabecera de conexión es alta, las conexiones persistentes te ayudan considerablemente . Ellas hacen que el proceso hijo simplemente conecte solamente una vez durante todo su intervalo de vida, en vez de cada vez que procesa una pagina que requiere conectar al servidor SQL. Esto significa que por cada hijo que abrió una conexión persistente tendrá su propia conexión persistente al servidor. Por ejemplo, si tienes 20 procesos hijos distintos que corran un archivo de comandos que cree una conexión persistente a tu servidor SQL, tendrías 20 conexiones diferentes a ti servidor SQL, una por cada hijo.
No obstante, hay que tener en cuenta que esto puede tener desventajas si estais utilizando una base de datos con límites de conexión, por debajo del numero de procesos hijo con conexiones persistentes. Si tu base de datos tiene un límite de 16 conexiones simultaneas y en el curso de una sesión de servidor, 17 procesos hijo intentan conectarse, uno de ellos no podrá hacerlo. Si existen errores en los scripts, que no permitan terminar la conexion (p.ej.bucles infinitos), una base de datos con solo 16 conexiones puede ser rápidamente hundida. Comprobar la documentacion de vuestra base de datos para obtener información sobre que hacer con conexiones abandonadas ó libres.
¿ donde es indicado de usar ?
Pues realmente deberían ser usadas donde se conozcan de antemano el rango de clientes posibles, como habeis leído con anterioridad una base de datos con 16 conexiones en una súper máquina puedes ser hundida en cuestión de horas, por lo que es importante conocer el rango de posibles conexiones máximas y simultaneas que tendrás para poder habilitar la persistencia de las conexiones.
El balanceo (no balanceo de carga) de un arte, donde el que lo hace debe siempre saber dimensionar, sobre todo en el entorno AMP (Apache, MySQL, PHP) ya que estos tres programas se encuentran relacionados.
*Muchas de las definiciones las he copiado de php.net ya que no tenía ganas de escribirlas, pero espero que se hayan entendido
http://www.php.net/manual/en/features.persistent-connections.php
Insertar CODE, HTML o PHP:
/* Setting this variable to 1 will cause PHP to use persistent connections to the MySQL server. For very large vBulletin installations, using persistent connections may result in a slight performance boost but in most cases leaving it set to 0 (off) is the best option. If you are unsure, leave it set to 0 */
[B][COLOR=red]$config['MasterServer']['usepconnect'] = 0[/COLOR][/B]
- ¿ Pero que es ?
- ¿ en que nos beneficia ?
- ¿ donde es indicado de usar ?
¿Que son ?
Las conexiones persistentes son enlaces que no se cierran cuando termina la ejecución del archivo de comandos. Cuando se pide una conexión persistente, PHP comprueba si hay ya una conexión persistente idéntica (que permanecía abierta desde antes) - y si existe, la usa. Si no existe, crea un enlace. Una conexión 'idéntica' es una conexión que se abrió hacia el mismo "host", con el mismo nombre de usuario y la misma contraseña (donde sea aplicable).
¿ en que nos beneficia ?
La respuesta aqui es extremadamente simple -- eficiencia. Las conexiones persistentes son buenas si las cabeceras de control para crear un enlace a tu servidor SQL es alta. Que estas cabeceras sean o no realmente altas depende de muchos factores. Como, qué clase de base de datos es, si esta o no situada en el mismo ordenador que el servidor web, cómo está de cargada la máquina donde se encuentre el servidor SQL, y otras así. El hecho fundamental es que si la cabecera de conexión es alta, las conexiones persistentes te ayudan considerablemente . Ellas hacen que el proceso hijo simplemente conecte solamente una vez durante todo su intervalo de vida, en vez de cada vez que procesa una pagina que requiere conectar al servidor SQL. Esto significa que por cada hijo que abrió una conexión persistente tendrá su propia conexión persistente al servidor. Por ejemplo, si tienes 20 procesos hijos distintos que corran un archivo de comandos que cree una conexión persistente a tu servidor SQL, tendrías 20 conexiones diferentes a ti servidor SQL, una por cada hijo.
No obstante, hay que tener en cuenta que esto puede tener desventajas si estais utilizando una base de datos con límites de conexión, por debajo del numero de procesos hijo con conexiones persistentes. Si tu base de datos tiene un límite de 16 conexiones simultaneas y en el curso de una sesión de servidor, 17 procesos hijo intentan conectarse, uno de ellos no podrá hacerlo. Si existen errores en los scripts, que no permitan terminar la conexion (p.ej.bucles infinitos), una base de datos con solo 16 conexiones puede ser rápidamente hundida. Comprobar la documentacion de vuestra base de datos para obtener información sobre que hacer con conexiones abandonadas ó libres.
¿ donde es indicado de usar ?
Pues realmente deberían ser usadas donde se conozcan de antemano el rango de clientes posibles, como habeis leído con anterioridad una base de datos con 16 conexiones en una súper máquina puedes ser hundida en cuestión de horas, por lo que es importante conocer el rango de posibles conexiones máximas y simultaneas que tendrás para poder habilitar la persistencia de las conexiones.
El balanceo (no balanceo de carga) de un arte, donde el que lo hace debe siempre saber dimensionar, sobre todo en el entorno AMP (Apache, MySQL, PHP) ya que estos tres programas se encuentran relacionados.
*Muchas de las definiciones las he copiado de php.net ya que no tenía ganas de escribirlas, pero espero que se hayan entendido
http://www.php.net/manual/en/features.persistent-connections.php