Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Guardar un ojeto "conexion" en sesión

Estas en el tema de Guardar un ojeto "conexion" en sesión en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos, estoy haciendo para mi aplicación el típico "usuario-contraseña", para optimizar las conexiones a la BD, se me ha ocurrido que una vez ...
  #1 (permalink)  
Antiguo 23/05/2008, 05:14
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta Guardar un ojeto "conexion" en sesión

Hola a todos,
estoy haciendo para mi aplicación el típico "usuario-contraseña", para optimizar las conexiones a la BD, se me ha ocurrido que una vez que el usuario haya logrado acceder a la aplicación, guardar la conexión a la base de datos. Ya he probado a lamacenar objetos y no tengo ningún problema (utilizando serialize y unserialize), pero al guardar este objeto de esa manera me da errores.

No sé si es que no se puede almacenar dicho objeto o lo estoy haciendo mal.

El problema es que si no puedo almacenar la conexión, en cada página que muestre, tendré que abrir y cerrar la conexión.
  #2 (permalink)  
Antiguo 23/05/2008, 08:06
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 15 años, 11 meses
Puntos: 11
Respuesta: Guardar un ojeto "conexion" en sesión

$_SESSION["nombre"] = $objeto;

luego para levantarlo
$objeto = $_SESSION["nombre"];

tu no necesitas serializar nada para hacerlo.

para no realizar tantas conexiones y desconexiones a la bd yo te recomiendo utilizar mysql_pconnect. (si usas mysql)
aqui hay algo
http://ar2.php.net/manual/es/features.persistent-connections.php
  #3 (permalink)  
Antiguo 23/05/2008, 08:23
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Guardar un ojeto "conexion" en sesión

¿Por qúe dices que no es necesario "serializar"?

Siempre que he tenido que almacenar objetos en sesiones, lo he tenido que hacer.

He probado a guardar la conexión como dices y no funciona.

Respecto a lo que dices del método, miraré a ver como va, lo que pasa es que para que la aplicación sea mas portable, estoy utilizando ADODB. Por eso si es un método específico de MySql no me sirve.

Gracias por la respuesta.
  #4 (permalink)  
Antiguo 23/05/2008, 09:19
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 15 años, 11 meses
Puntos: 11
Busqueda Respuesta: Guardar un ojeto "conexion" en sesión

cuando guardas un objeto en la session se serializa automaticamente y queda guardado en el archivo de sesion de esa manera.
quizás tengas algo más que no sé que no te permite hacerlo

Ah! en php cuando utilizas una conexion no persistente por mas que me guarde el objeto conexion; PHP se encarga de cerrar la conexion (nuevamente en mysql) al no ser esta "persistente".

Quizás sea ese tu problema

Última edición por xbx; 23/05/2008 a las 09:41
  #5 (permalink)  
Antiguo 23/05/2008, 09:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Guardar un ojeto "conexion" en sesión

Hola centrion_75,

Como dice xbx, las conexiones a la base de datos son variables del tipo "resource", y estas incluyen también punteros a archivos abiertos, etc.

Este tipo de variables son monitoreadas fuertemente por PHP, y por el Garbage Collector, si al finalizar tu script no se han cerrado son automáticamente cerradas y limpiadas, este es el comportamiento nativo de PHP.

Por otro lado como te comenta xbx, puedes usar conexiones persistentes, pero recuerda que para esto tu servidor de bases de datos tiene que estar bien configurado ya que rápidamente te puedes quedar sin conexiones si abusas de ese recurso.

Saludos.
  #6 (permalink)  
Antiguo 24/05/2008, 03:20
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Guardar un ojeto "conexion" en sesión

Efectivamente teneís razón con lo de las conexiones ( lógico puesto que yo soy un novato en PHP).

Ahora estoy dandole vueltas a lo de utilizar conexiones persistentes.

Esta claro que si por cada usuario se guardase la conexión, es mas eficiente que utilizar una conexión para cada script. Pero por otro lado la aplicación que estoy desarrollando, es mi proyecto de fin carrera para la universidad, y los usuarios a los que va dirigida, son los profesores del departamento y no son mas de 70. Y en principio, no es una aplicación pensada para que esten todos los días conectandose a ella, sino al principio y final de cada cuatrimestre y ligeramente durante el curso. Además estoy utlizando Mysql y el Apache a través de XAMPP, y la verdad es que tocar algo de la configuración me dá un poco de pánico.

Por todo ello me parece que voy a optar por hacer una conexión por cada script.
De todas formas me gustaría saber vuestra opinión al respecto.

Nuevamente, gracias.
  #7 (permalink)  
Antiguo 26/05/2008, 06:19
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 15 años, 11 meses
Puntos: 11
Información Respuesta: Guardar un ojeto "conexion" en sesión

Cita:
Iniciado por centrion_75 Ver Mensaje
Efectivamente teneís razón con lo de las conexiones ( lógico puesto que yo soy un novato en PHP).

Ahora estoy dandole vueltas a lo de utilizar conexiones persistentes.

Esta claro que si por cada usuario se guardase la conexión, es mas eficiente que utilizar una conexión para cada script. Pero por otro lado la aplicación que estoy desarrollando, es mi proyecto de fin carrera para la universidad, y los usuarios a los que va dirigida, son los profesores del departamento y no son mas de 70. Y en principio, no es una aplicación pensada para que esten todos los días conectandose a ella, sino al principio y final de cada cuatrimestre y ligeramente durante el curso. Además estoy utlizando Mysql y el Apache a través de XAMPP, y la verdad es que tocar algo de la configuración me dá un poco de pánico.

Por todo ello me parece que voy a optar por hacer una conexión por cada script.
De todas formas me gustaría saber vuestra opinión al respecto.

Nuevamente, gracias.
En realidad una conexion persistente no es una conexion por cada usuario... sino, una conexion por cada daemon que corre en el server (fíjate en el link de php.net que te pase), esto quiere decir que puede haber, por ej, 3 conexiones persistentes abiertas que se encarguen de docenas de usuarios; el tema esta en en que si el server se da cuenta que necesita mas daemons para atender mas usuarios abre un par mas.. pero no 1 por usuario necesariamente. (esta es la mayor confusión que suelen crear las pconexions)
  #8 (permalink)  
Antiguo 26/05/2008, 09:46
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Guardar un ojeto "conexion" en sesión

ok,

entonces ¿crees que me merece la pena utilizarlas?,¿Son difíciles de utilizar?
  #9 (permalink)  
Antiguo 26/05/2008, 10:30
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 15 años, 11 meses
Puntos: 11
Respuesta: Guardar un ojeto "conexion" en sesión

en mysql se usa asi:
mysql_pconnect(host...user..pass);
bueno... nada mas!
tu no debes hacer nada.
Tu no trabajas con mysql verdad? averigua sobre conexiones persistentes para la tecnologia que utilizas.
  #10 (permalink)  
Antiguo 26/05/2008, 11:48
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Guardar un ojeto "conexion" en sesión

Para que sea portable, estoy utilizando ADODB,luego me imagino que tendré que utilizar funciones de ese paquete.

De momento si que estoy utilizando MySql.

Gracias.
  #11 (permalink)  
Antiguo 26/05/2008, 12:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Guardar un ojeto "conexion" en sesión

Hola centrion_75,

Recuerda que no todos los manejadores de Bases de Datos soportan conexiones persistentes.

Saludos.
  #12 (permalink)  
Antiguo 27/05/2008, 02:06
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Guardar un ojeto "conexion" en sesión

Ok,
gracias a todos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 03:58.