Pool de conexiones en PHP

Julio Araya julioarayacerda en gmail.com
Vie Feb 10 09:14:04 CLST 2006


On 2/9/06, Rodrigo Fuentealba <darkprox en gmail.com> wrote:
> JuanPa wrote:
> > Gracias por sus respuestas listeros...

de nada

> > La verdad si me estoy complicando con mis tres capas... bien cabe
> > decirlo que es la primera vez que lo pongo en practica en PHP de forma
> > practica. Bien dicen por ahi, que 100 horas de teoria no valen un
> > cacho sin una de práctica. Es por eso que me estaba complicando con

Eso dicen y en lo personal te digo que es bastante cierto...

> > esto de las conexiones. Quisiera que me aclaren un poco mas el
> > concepto de conexion persistente y su utilidad practica.
> A ver, las conexiones persistentes dejan un buffer abierto mientras se
> ejecutan las consultas, y son más rápidas pero consumen más recursos,
> pues dejan la conexión abierta mientras no se cierre la aplicación (con
> exit(); o matándolas). Es un atentado en contra de tu memoria, y por lo
> general, mucha gente las encuentra más fáciles, pero yo como que no las
> recomiendo.
>
> Es mejor usar conexiones no persistentes, es decir, abriendo la conexión
> al principio de tu script y cerrando la conexión al final, pues siempre
> vas a tener páginas que no hagan ninguna consulta a la base de datos...
> ¿Para qué, entonces, tendrás una conexión abierta? Es únicamente un
> desperdicio de recursos.

Completamente de acuerdo

>
> Por eso es mejor abrir la conexión al principio de un script y cerrarla
> al final, y si tienes funciones que recuperan datos como el caso de tu
> buscar alumno, en vez de abrir una conexión nueva, preguntes si ya hay
> una conexión abierta para aprovecharla.

Se podria usar por ejemplo una clase de conexion que tenga una
variable privada estatica(ej $miConexion = false) y un metodo estatico
getConexion()
y esta misma clase tener un destructor como este

class Conexion{
   private static $miConexion = false;

   public static function getConexion(){
      //si la conexion esta establecida se retorna, si no
     //se establece una conexion y se devuelve el identificador de la conexion
    // guardando antes en identificador en self::$miConexion
     return self::$miConexion;
  }

   private static function __construct(){}

   private static function __destruct (){
       //si $miConexion esta abierta entonces cierro la conexion
   }
}

De esta manera te olvidas(un poco por lo menos) de tener que cerrar
las conexiones al finalizar el script... Me parece que con unas
pequeñas modificaciones pdrias tener un pool de conexiones e ir
cerrandolas tambien

> [...]

--
Julio Araya C.                                       Linux User #386141
Estudiante de Ingeniería Civil Informatica           Valparaiso - Chile
Universidad Tecnica Federico Santa Maria
http://www.alumnos.utfsm.cl/~julio.araya
http://www.arriendocasas.cl



Más información sobre la lista de distribución PHP