Pool de conexiones en PHP

JuanPa juanpablo.magno en gmail.com
Mie Feb 8 19:23:02 CLST 2006


[Reenviado, el codigo estaba un poco pequeño]
Hola a todos foristas...
Estoy implementando un sistema de registro de alumnos en PHP5 / Postgres con
tres capas, no estoy utilizando ningun framework o uno de esos otros chiches
(quisiera toparme con estos problemillas primero). Mi consulta radica en la
forma en que hago mis conexiones de base datos, si bien es cierto hay q
dejar todo el peso de las conexiones a la capa de persistencia de datos,
esto hace q abra y cierre las conexiones a cada rato.
Por ejemplo en el caso de cargar un objeto alumno haria:
 Código PHP:
   function buscarAlumno($codigo){
    $con = new Conexion();
    $con->conectarse();

    // hago mi consulta
    $con->query($sql)

    $alumno = new Alumno();
    $alumno->colegio = Colegio::buscarColegio($data["cod_colegio"]);
    //este metodo internamente tambien abre y cierra una conexion;
    $alumno->ciudad = Colegio::buscarCiudad($data["cod_ciudad"]);
    //esta tambien
    //... y cuantas tuviera

    $con->cerrar_conexion();
    // cerramos la conexion de al inicio
    return $alumno;
}
   Esto abriria y cerraria muchas conexiones por lo q reventaria el limite
de estas.
Otro caso es este:
 Código PHP:

function buscarAlumno($con,$codigo){
    $alumno = new Alumno();
    // hago mi consulta
    $con->query($sql)
    $alumno->colegio = Colegio::buscarColegio($con,$data["cod_colegio"]);
    //usa la conexion ya disponible;
    $alumno->ciudad = Colegio::buscarCiudad($con,$data["cod_ciudad"]);
    //este tambien
    //... y cuantas tuviera

    return $alumno;
}

Aqui mando mi conexion abierta desde fuera, pero esto haria que el que abra
mi conexion sea mi capa de logica de negocio, pero supuestamente esta no
debería ser su funcion, ademas imaginemos q el metodo de la capa de logica
sea un poco extensa, la conexion estaria abierta mucho tiempo, y eso tambien
acarrearia problemas.
La pregunta del millon es esta...
¿Cual de las dos formas es la mas optima a utilizar?
¿Existe una tercera forma?
¿Que hay de los pool de conexiones.. me comentaban que evitaban estos
problemas?
Esto ultimo no lo he investigado
Agredecere cualquier colaboracion.
--
Juan Pablo
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listas.inf.utfsm.cl/pipermail/php/attachments/20060208/8b8c999e/attachment.html


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