es recomendable mantener la conexion de BD en session

alisanto

Lanero Regular
29 Nov 2003
91
hola compañeros estoy en una duda que no me esta dejando tranquilo, bueno ahi vamos

estoy diseñando una intranet desarrollado por ahora en PHP, y el sistema BD ORACLE, se tiene descentralizada la data y con unas sedes el problema de conexion es muy lento para ello la intranet deberia estar enfocado al manejo de STORE PROCEDURES para que se comporte de una manera óptima sobre todo con la sede del problema y pues si se mantiene un buen rendimiento

es cierto q no se debe sobre cargar al servidor web ni menos a la BD para ello primero al logearse los usuarios se genera una session al cual se guardan los datos pertinentes de los usuarios
una vez ingresado el usuario puede visualizar diversos modulos, pero por cada mopdulo que se requiera, se realizan nuevos querys y para ello me conecto nuevamente y me desconecto al finalizar el script q es requerido

este problema de conectarme y desconectarme me tiene un poco preocupado, pues para optimizar mi codigo pues preferiria mantener la conexion con la base de datos en una variable de session y pues por cada modulo que se visualice deberia ingresar directamente los querys y hacerlo mas óptimo sobre todo con la sede q tiene problemas de conexion dado q se envcuentra muy alejada y el ancho de banda es muy limitada, y solo habria el problema de lentitud al LOGEARME y en las demas consultas por modulos solo se harian los acceso mas rapidos con lo STORE PROCEDURES

claro a esta solución planteada se le suma la carga con el servidor de BD, se mantedria una conexión ocupada, en verdad seria muy recomendado esto ????????????
 
Nooooooo !!! no haga eso, esta loco !! ... ni de fundas, conectese y desconectese siempre .. lo que debe tener es un pool de conexiones para optimizar el cuento ...

Finalmente de todos modos las conexiones no son serializables :S ....
 
SI, exacto, el mantener la coenxión abierta, mata el desempeño, y si se dejan abeirtas, mientras dura la sesión sería brutal proque la sesión cuanto dura??????
 
aprovechando el tema ... me podrian indicar de manera tecnica que es un pool de conexiones ... y esta de que manera se configura.. (eso seria en el servidor web)....????

Gracias por la info
 
No, eso no tiene nada que ver con el servidor web, solamente hay que configurar la base de datos.

Oracle es bien pesada.. habria que leer los manuales a ver de que manera se puede configurar la cuestion para mantener algo de informacion en memoria de modo que el acceso sea mas rapido.
 
Pues los pool de conexiones son servicios que mantienen un grupo de conexiones abiertas de modo que cuando se le pide una conexión al pool este no necesariamente abre una si no que entrega una abierta, cuando cierras la conexion no lo haces fisicamente sino que la devuelves al pool para que vuelva a usarla con otro que haga una peticion, de este modo se reduce el enorme tiempo de abrir y cerrar conexiones.

Lo que pasa es que de la manera que lo propone hacer el autor del foro es mal sistema pues las conexiones tienen timeout, informacion de transacciones, etc .. y un pool de conexiones profesional gestiona todo esto y es mas complicado que tener simplemente la conexión referenciada.

Los servicios de pool de conexion no tienen que ver necesariamente con un servidor web, algunos aplication servers y contenedores de EJB traen este servicio disponible, ejemplo tomcat, jboss, iPlanet, Webphere .. mejor dicho, application server que se respete .. (no sé si IIS tendra uno :S )
 
Hola Rulas... gracias por la info, ahora pregunto en php eso no es lo que se conoce como conexiones persistentes???? he buscado informacion y encontrado varios ejempos en Tomcat y java pero nada con apache y php... y pues me gustaria saber.......
Gracias por la info que me puedan dar......
 
excelente acotacion amigo RULAS , pues eh estado averiguando sobre ello y si es excelente salida, pero tengo una duda es que soy un poquito curioso en el asunto lo manifestare a traves de un ejemplo que es mi caso q trabajo con diversas sedes ubicadas geograficamente muy alejadas.

ej: SEDE 01 tendra abierta una conexion A cuando es requerida por un usuario y permanecera hasta q no se la requiera completamente a la conexion A ?? y si huviesen 2 o 3 usuarios que ingresan requeriendo visualizar datos a SEDE 01 entonces se turnaran por la conexion A pero la validacion de cada usuario como es manejada?????? y luego los usuario se desconectan o en todo caso dejan de hacer requeriemientos y en el peor de los casos estan conectados pero no cierran SESSION es aquí donde el pool de conexion es capaz de cerrar la conexión A hasta q nuevamente sea requerida???????


bueno espero que mis dudas, os no los moleste a los amigos
pero estoy averigando al respecto

bueno y gracias a popetmaster tambien por su pregunta espero q se aclare tambien su pregunta sobre el caso de conexiones persistentes en PHP, pues el pool lo q hace es manejar conexiones persistentes pero existe alguna diferencia ????.
 
Texto Originalmente Escrito por poppetmaster
Hola Rulas... gracias por la info, ahora pregunto en php eso no es lo que se conoce como conexiones persistentes???? he buscado informacion y encontrado varios ejempos en Tomcat y java pero nada con apache y php... y pues me gustaria saber.......
Gracias por la info que me puedan dar......

Los siento mucho poppet, no he usado pool de conexiones desde php :( .... lo que si te puedo decir es que apache no soporta pool de conexiones pues es un simple servidor web, te toca usar tomcat (o la combinacion apache-tomcat) ! ese si soporta pool.

Texto Originalmente Escrito por alisanto

ej: SEDE 01 tendra abierta una conexion A cuando es requerida por un usuario y permanecera hasta q no se la requiera completamente a la conexion A ?? y si huviesen 2 o 3 usuarios que ingresan requeriendo visualizar datos a SEDE 01 entonces se turnaran por la conexion A pero la validacion de cada usuario como es manejada?????? y luego los usuario se desconectan o en todo caso dejan de hacer requeriemientos y en el peor de los casos estan conectados pero no cierran SESSION es aquí donde el pool de conexion es capaz de cerrar la conexión A hasta q nuevamente sea requerida???????



Nadie se turna nada porque hay un pool de conexiones (pool implica un grupo) !! si alguno tiene una conexion ocupada, se toma otra conexion diferente, si alguno desocupa una esta sera tomada por peticiones posteriores. Simple y basico :)
 
hola rulas podrias explicarlo con el ejemplo planteado por fa, es q quiero salir de la duda, quiero saber el por Q de como se maneja el pool de conexiones, el logeo de los usuarios ???? si el pool es por grupos entonces como veo el logeo de los usuarios ???
 
Texto Originalmente Escrito por alisanto
hola rulas podrias explicarlo con el ejemplo planteado por fa, es q quiero salir de la duda, quiero saber el por Q de como se maneja el pool de conexiones, el logeo de los usuarios ???? si el pool es por grupos entonces como veo el logeo de los usuarios ???

No tiene nada que ver !! .. el logeo de usuarios lo ves por aplicacion o por base de datos segun lo estes haciendo ...

Y si quieres saber más de pool de conexiones te toco estudiar por tu cuenta o hacer un curso, esto es una tecnologia complicada y que merece dedicarle un buen tiempito. No es un tema de explicarlo en un foro, en google hay resto de articulos.
 
Gracias RULAS por la informacion... de todas maneras seguire investigando sobre el pool de conexiones en apache y php.. lo que si te digo Rulas es que hace poco fui a una conferencia donde un grupo que desarrollo un software en php+apache+oracle a coomeva nos explico que ellos realizaron un 'pool de conexiones' y luego dijieron que hace poco se habia lanzado una especie de librerias llamada SQL Relay (algo asi como ADOdb pero mas potente por lo del pool de conexiones) que maneja estas conexiones,,,, por eso me entro la curiosidad y empeze a buscar y no encontre nada..... pero bueno hay que seguir estudiando........
 
Si he oido de gente que ha fabricado pool de conexiones propios pero honestamente mejor es usar uno de una casa de desarrollo con tradición y no ponerse a crear uno, iPlanet, Webphere, Weblogic, JBoss tienen pool de conexiones muy eficientes ! ...
 
bueno gracias amigo RULAS, tienes razón acerca de la parte de la investigación, pues no todo es conocido, y las preguntas que plantee pues tienen sustento hasta donde eh investigado, es decir esta bien planteado, y solo me parece erroneo, lo de turnarse, solo digo me parece, pues aun no lo descarto. bien de todas maneras gracias amigo y a toda la gente q aporto ideas, como siempre son excelentes amigos ...
 

Los últimos temas