Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/02/2006, 16:10
Avatar de juanpablomagno
juanpablomagno
 
Fecha de Ingreso: enero-2004
Mensajes: 35
Antigüedad: 20 años, 4 meses
Puntos: 0
Pool de conexiones en PHP

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.

Última edición por juanpablomagno; 08/02/2006 a las 16:18