Hola a todos listeros...<br>
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 <img src="http://www.forosdelweb.com/images/smilies/dedosarriba.gif" alt="" title="de acuerdo" class="inlineimg" border="0">
(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.<br>
Por ejemplo en el caso de cargar un objeto alumno haria:<br>
<div style="margin: 5px 20px 20px;">
        <div class="smallfont" style="margin-bottom: 2px;">Código PHP:</div>
        <div class="alt2" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 306px;">
                <code style="white-space: nowrap;">
                </code><div dir="ltr" style="text-align: left;">
                        <code><font color="#000000">
<font color="#007700">&lt;?</font><font color="#0000bb">php&nbsp;BEGIN__VBULLETIN__CODE__SNIPPET&nbsp;</font><font color="#007700">function&nbsp;</font><font color="#0000bb">buscarAlumno</font><font color="#007700">(</font><font color="#0000bb">
$codigo</font><font color="#007700">){<br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$con&nbsp;</font><font color="#007700">=&nbsp;new&nbsp;</font><font color="#0000bb">Conexion</font><font color="#007700">();<br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">
$con</font><font color="#007700">-&gt;</font><font color="#0000bb">conectarse</font><font color="#007700">();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#ff8000">//&nbsp;hago&nbsp;mi&nbsp;consulta<br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$con</font><font color="#007700">
-&gt;</font><font color="#0000bb">query</font><font color="#007700">(</font><font color="#0000bb">$sql</font><font color="#007700">)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$alumno&nbsp;</font><font color="#007700">=&nbsp;new&nbsp;</font>
<font color="#0000bb">Alumno</font><font color="#007700">();&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$alumno</font><font color="#007700">-&gt;</font><font color="#0000bb">colegio&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">
Colegio</font><font color="#007700">::</font><font color="#0000bb">buscarColegio</font><font color="#007700">(</font><font color="#0000bb">$data</font><font color="#007700">[</font><font color="#dd0000">&quot;cod_colegio&quot;
</font><font color="#007700">]);<br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#ff8000">//este&nbsp;metodo&nbsp;internamente&nbsp;tambien&nbsp;abre&nbsp;y&nbsp;cierra&nbsp;una&nbsp;conexion;<br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$alumno</font><font color="#007700">-&gt;</font><font color="#0000bb">
ciudad&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">Colegio</font><font color="#007700">::</font><font color="#0000bb">buscarCiudad</font><font color="#007700">(</font><font color="#0000bb">$data</font><font color="#007700">
[</font><font color="#dd0000">&quot;cod_ciudad&quot;</font><font color="#007700">]);<br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#ff8000">//esta&nbsp;tambien<br>&nbsp;&nbsp;&nbsp;&nbsp;//...&nbsp;y&nbsp;cuantas&nbsp;tuviera<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$con</font><font color="#007700">
-&gt;</font><font color="#0000bb">cerrar_conexion</font><font color="#007700">();<br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#ff8000">//&nbsp;cerramos&nbsp;la&nbsp;conexion&nbsp;de&nbsp;al&nbsp;inicio<br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">return&nbsp;</font><font color="#0000bb">
$alumno</font><font color="#007700">;<br>}&nbsp;
<br></font>
</font>
</code>
                </div>
                
        </div>
</div>
Esto abriria y cerraria muchas conexiones por lo q reventaria el limite de estas.<br>
Otro caso es este:<br>
<div style="margin: 5px 20px 20px;">
        <div class="smallfont" style="margin-bottom: 2px;">Código PHP:</div>
        <div class="alt2" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 210px;">
                <code style="white-space: nowrap;">
                </code><div dir="ltr" style="text-align: left;">
                        <code><font color="#000000">
<font color="#007700">&lt;?</font><font color="#0000bb">php&nbsp;BEGIN__VBULLETIN__CODE__SNIPPET&nbsp;</font><font color="#007700">function&nbsp;</font><font color="#0000bb">buscarAlumno</font><font color="#007700">(</font><font color="#0000bb">
$con</font><font color="#007700">,</font><font color="#0000bb">$codigo</font><font color="#007700">){<br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$alumno&nbsp;</font><font color="#007700">=&nbsp;new&nbsp;</font><font color="#0000bb">Alumno</font>
<font color="#007700">();<br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#ff8000">//&nbsp;hago&nbsp;mi&nbsp;consulta<br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$con</font><font color="#007700">-&gt;</font><font color="#0000bb">query</font><font color="#007700">(</font>
<font color="#0000bb">$sql</font><font color="#007700">)<br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$alumno</font><font color="#007700">-&gt;</font><font color="#0000bb">colegio&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">
Colegio</font><font color="#007700">::</font><font color="#0000bb">buscarColegio</font><font color="#007700">(</font><font color="#0000bb">$con</font><font color="#007700">,</font><font color="#0000bb">$data</font><font color="#007700">
[</font><font color="#dd0000">&quot;cod_colegio&quot;</font><font color="#007700">]);<br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#ff8000">//usa&nbsp;la&nbsp;conexion&nbsp;ya&nbsp;disponible;<br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$alumno</font><font color="#007700">
-&gt;</font><font color="#0000bb">ciudad&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">Colegio</font><font color="#007700">::</font><font color="#0000bb">buscarCiudad</font><font color="#007700">(</font><font color="#0000bb">
$con</font><font color="#007700">,</font><font color="#0000bb">$data</font><font color="#007700">[</font><font color="#dd0000">&quot;cod_ciudad&quot;</font><font color="#007700">]);<br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#ff8000">//este&nbsp;tambien
<br>&nbsp;&nbsp;&nbsp;&nbsp;//...&nbsp;y&nbsp;cuantas&nbsp;tuviera<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">return&nbsp;</font><font color="#0000bb">$alumno</font><font color="#007700">;<br>}&nbsp;
<br></font>
</font>
</code>
                </div>
                
        </div>
</div>
<br>
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.<br>
La pregunta del millon es esta... <br>
¿Cual de las dos formas es la mas optima a utilizar?<br>
¿Existe una tercera forma?<br>
¿Que hay de los pool de conexiones.. me comentaban que evitaban estos problemas?<br>
Esto ultimo no lo he investigado<br>
Agredecere cualquier colaboracion.<br clear="all"><br>-- <br>Juan Pablo