Foros del Web » Programando para Internet » PHP »

Guardar conexión a Mysql en una Session?

Estas en el tema de Guardar conexión a Mysql en una Session? en el foro de PHP en Foros del Web. Hola Gente, estoy intentando optimizar mi clase de conexión a mysql y he pensado en que quizás se podría guardar la conexión a la base ...
  #1 (permalink)  
Antiguo 01/03/2007, 18:32
Avatar de renton  
Fecha de Ingreso: enero-2004
Ubicación: BCN (PPCC)
Mensajes: 573
Antigüedad: 20 años, 2 meses
Puntos: 1
Guardar conexión a Mysql en una Session?

Hola Gente,
estoy intentando optimizar mi clase de conexión a mysql y he pensado en que quizás se podría guardar la conexión a la base de datos en una $_SESSION, de forma de que pudiera reutilizarse y no hiciera falta conectarse cada vez que se realiza una llamada a una página.
¿Es esto posible? Y si lo es... ¿sabéis si mejora sustancialmente el rendimiento de la web?

Yo he intentado hacer algo así:
(función de conexión resumida)

Cita:
function connect(){
if (!isset($_SESSION['bdConn'])){
$this->conn=mysql_connect($this->host,$this->login,$this->password); $_SESSION['bdConn']=$this->conn;
mysql_select_db($this->database,$this->conn);
}else{
$this->conn=$_SESSION['bdConn'];
mysql_select_db($this->database,$this->conn);
}
}
Pero no funciona:
Si la primera vez que cargo la página (osea, cuando la conexión todabía no está en sesión y conecta normalmente y bien) hago un
var_dump($this->conn);
el resultado es:
resource(5) of type (mysql link)
Por contra, si ejecuto la página por segunda vez (la sesión ya está cargada con la variable de conexión), el var_dump de ésta me muestra simplemente:
int(0)
Cómo lo véis?
Mil gracias!!
__________________
"No et limites a contemplar aquestes hores que ara venen, baixa al carrer i participa.
No podran res davant un poble unit, alegre i combatiu!!"

Última edición por renton; 01/03/2007 a las 19:00
  #2 (permalink)  
Antiguo 01/03/2007, 23:26
 
Fecha de Ingreso: febrero-2007
Ubicación: Peru
Mensajes: 38
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Guardar conexión a Mysql en una Session?

Hola segunlo leido la conexion muere depuesde haberse ejecutado el script pero creo que debes probar con mysql_pconnect($this->host,$this->login,$this->password);

Me gustaria ver que resultados has obtenidos
  #3 (permalink)  
Antiguo 02/03/2007, 02:35
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 21 años, 11 meses
Puntos: 8
Re: Guardar conexión a Mysql en una Session?

Lo que se me ocurre es que podrías hacer es crear el objeto en la página principal (o en la que sea) y usar 'serialize()' para serilizar el objeto. Después usas 'unserialize()' en la otra página y seguidamente llamas al método para hacer la conexión.

De todos modos depende también de cómo estés haciendo la web.

Salu2
  #4 (permalink)  
Antiguo 02/03/2007, 04:50
 
Fecha de Ingreso: mayo-2005
Mensajes: 188
Antigüedad: 18 años, 10 meses
Puntos: 6
No se puede

Cuidado! Una conexión a la mysql es un resource, y según el manual no se pueden serializar los recursos:

Código:
serialize()  handles all types, except the resource-type
  #5 (permalink)  
Antiguo 02/03/2007, 04:59
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 21 años, 11 meses
Puntos: 8
Re: Guardar conexión a Mysql en una Session?

Claro, por eso diga que en la otra página vuelva a realizar la conexión después de haber desserializado el objeto (usando la cadena de conexión que debe contener)
  #6 (permalink)  
Antiguo 02/03/2007, 05:01
Avatar de renton  
Fecha de Ingreso: enero-2004
Ubicación: BCN (PPCC)
Mensajes: 573
Antigüedad: 20 años, 2 meses
Puntos: 1
Re: Guardar conexión a Mysql en una Session?

Pero bueno, la idea era no tener que realizar la conexion mas que una vez al principio, y luego poder reutilizarla mientras la sesión esté activa (por muchos cambios de página que el usuario realice dento de mi web)
__________________
"No et limites a contemplar aquestes hores que ara venen, baixa al carrer i participa.
No podran res davant un poble unit, alegre i combatiu!!"
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




La zona horaria es GMT -6. Ahora son las 18:40.