Es posible caché de conexiones de base de datos cuando se usa PHP como lo haría en un contenedor J2EE? Si es así, ¿cómo?

InformationsquelleAutor The Chairman | 2008-09-02

7 Comentarios

  1. 52

    No hay la agrupación de conexiones en php.

    mysql_pconnect y la agrupación de conexiones son dos cosas diferentes.
    Hay muchos problemas relacionados con mysql_pconnect y primero debe leer el manual y cuidadosamente el uso de ella, pero esta no es la agrupación de conexiones.

    La agrupación de conexiones es una técnica en la que el servidor de aplicación maneja las conexiones. Cuando la aplicación necesita una conexión pregunta el servidor de aplicaciones y el servidor de aplicaciones devuelve una de las conexiones agrupadas si hay uno libre.

    Podemos hacer la conexión de la escala en php para que por favor vaya a través del siguiente enlace: http://www.oracle.com/technetwork/articles/dsl/white-php-part1-355135.html

    Así que no hay conexión de la puesta en común en php.

    De Julio, dijo el apache libera todos los recursos cuando finalice la solicitud para la actual instancia de parte. Usted puede utilizar mysql_pconnect pero está limitado a esa función y debe ser muy cuidadoso. Otra opción es utilizar el patrón singleton, pero nada de esto es la puesta en común.

    Este es un buen artículo: https://blogs.oracle.com/opal/highly-scalable-connection-pooling-in-php

    También leer este http://www.apache2.es/2.2.2/mod/mod_dbd.html

  2. 13

    Las conexiones persistentes son nada como la agrupación de conexiones. Una conexión persistente en php sólo reutilizarse si se realizan varias db se conecta dentro de la misma solicitud/script contexto de ejecución. En la mayoría de los típicos web dev escenarios tendrás el máximo de conexiones de forma más rápida si se utiliza mysql_pconnect porque el script no tendrán manera de obtener una referencia a las conexiones abiertas en su próximo pedido. La mejor manera de utilizar db conexiones en php es hacer una sola instancia de una base de datos de objetos, de modo que la conexión se vuelve en el contexto de la ejecución del script. Esto todavía se incurre en menos de 1 db conectar por la petición, pero es mejor que hacer varios db se conecta por reqeust.

    No es real db agrupación de conexiones en php debido a la naturaleza de php. Php no es un servidor de aplicaciones que puede sentarse allí en entre las solicitudes y gestionar las referencias a un pool de conexiones abiertas, al menos no sin algún tipo de gran hack. Creo que, en teoría, usted podría escribir un servidor de aplicaciones en php y ejecutarlo como una línea de comandos de secuencia de comandos que acaba de sentarse allí en el fondo y mantener un montón de db conexiones abiertas y pasar referencias a otras secuencias de comandos, pero no sé si eso sería posible en la práctica, ¿cómo te gustaría pasar las referencias de su línea de comandos de secuencia de comandos para el resto de los scripts, y yo especie de duda se llevaría a cabo bien, incluso si usted podría tirar de ella. De todos modos, que la mayoría de la especulación. Yo hice previo aviso los enlaces que alguien se sube a un módulo de apache para permitir la agrupación de conexiones para prefork servidores, tales como php. Se ve interesante:
    https://github.com/junamai2000/mod_namy_pool#readme

    • «La conexión con el servidor SQL no se cierra cuando la ejecución del script finalice.» – php.net/manual/en/function.mysql-pconnect.php
    • esto es incorrecto en PHP-FPM y Apache/mod_php.
    • «La mejor manera de utilizar db conexiones en php es hacer una sola instancia de una base de datos de objetos, de modo que la conexión se vuelve en el contexto de la ejecución del script.» – Este es el ganso de oro que estoy buscando. Excelente manera de explicar exactamente dónde y por qué el singleton sería útil!
  3. 8

    Supongo que estás usando mod_php, ¿verdad?

    Cuando un archivo PHP de finalizar la ejecución de todo lo que está muerto no hay ninguna manera (en el código PHP) para hacer la agrupación de conexiones. En lugar de tener que depender de las extensiones.

    Puede mysql_pconnect para que tus contactos no se cierran después de que la página termine, que la forma en que se reutilizan en la siguiente solicitud.

    Esto podría ser todo lo que usted necesita, pero esto no es lo mismo como la agrupación de conexiones ya que no hay forma de especificar el número de conexiones para mantener la abrió.

    Saludos.

    • Puede que la conexión de ser reutilizados por diferentes usuarios?Si es así, ¿por qué el manual dice que debemos de configurar MySQL para evitar un número excesivo de conexiones?
  4. 6

    Puede utilizar MySQLi.

    Para obtener más información, desplácese hacia abajo para la agrupación de conexiones sección @ http://www.php.net/manual/en/mysqli.quickstart.connections.php#example-1622

    Nota que la agrupación de conexiones, también depende de tu servidor (es decir, Apache httpd) y de su configuración.

    • Esta respuesta debería ser hasta el último, todos los demás son muy viejos. La agrupación de conexiones y los problemas que puede ocasionar son muy reales!
  5. 0

    No se pueden crear instancias de los grupos de conexión manualmente.

    Pero usted puede usar la integrada en la agrupación de conexiones con el mysql_pconnect función.

  6. 0

    Me gustaría sugerir PDO::ATTR_PERSISTENT

    Las conexiones persistentes son enlaces que no se cierran cuando la ejecución del script finalice. Cuando se pide una conexión persistente, PHP comprueba si ya existe una conexión persistente idéntica (que permaneció abierta desde antes) – y si existe, la usa. Si no existe, crea el enlace.

  7. 0

    Agrupación trabaja en MySQL lado del servidor como este.

    1. Si la persistencia de conexión está habilitada en el servidor de MySQL de configuración, a continuación, MySQL mantener una conexión abierta y en estado de reposo después de solicitado el cliente (php) finises su trabajo y morir.
    2. Cuando un 2ª petición viene con las mismas credenciales de datos (con el Mismo Nombre de Usuario, la Contraseña, el Mismo Parámetro de Conexión, el Mismo nombre de Base de datos, tal vez desde la misma IP, no estoy seguro acerca de la IP), a Continuación, MySQL piscina de la conexión anterior, desde el estado de sueño al estado activo y dejar que el cliente utilice la conexión. Esto ayuda a MySQL para ahorrar tiempo inicial de recursos para la conexión y reducir el número total de conexión.

    Por lo que la agrupación opción está disponible en el servidor de MySQL lado. En el código PHP final no hay ninguna opción. mysql_pconnect() es simplemente un contenedor que informar de PHP a la no conexión de envío de solicitud de cierre de la señal al final de la ejecución de secuencias de comandos.

Dejar respuesta

Please enter your comment!
Please enter your name here