Foros del Web » Programando para Internet » PHP »

Problema con SessionHandlerInterface

Estas en el tema de Problema con SessionHandlerInterface en el foro de PHP en Foros del Web. Hola que tal, Estoy probando mi propia clase manejadora para las sesiones usando el mismo ejemplo que viene aquí http://mx2.php.net/manual/es/class.s...rinterface.php solo le agregue unas instrucciones ...
  #1 (permalink)  
Antiguo 10/11/2012, 23:29
 
Fecha de Ingreso: julio-2011
Ubicación: Zapopan, Jal. MX
Mensajes: 316
Antigüedad: 12 años, 9 meses
Puntos: 32
Pregunta Problema con SessionHandlerInterface

Hola que tal,

Estoy probando mi propia clase manejadora para las sesiones usando el mismo ejemplo que viene aquí http://mx2.php.net/manual/es/class.s...rinterface.php solo le agregue unas instrucciones al método SessionHandlerInterface::close() para crear un archivo vacio con el fin de saber si funciona.

Efectivamente cuando forzo el cierre de la sesion con session_write_close() el archivo se crea pero cuando cierro el navegador la sesion se cierra pero no se crea el archivo por lo que parece que no se acciona el método SessionHandlerInterface::close().

¿Qué pasa?, Gracias!
  #2 (permalink)  
Antiguo 10/11/2012, 23:32
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: Problema con SessionHandlerInterface

Recuerda que depende mucho de la configuración de tu PHP.ini, cuando cierras el navegador este no cierra la sesión en el servidor, si no que PHP espera a que pase el session.gc_maxlifetime para detectar la sesión como inactiva y procede al cierre de la sesión.

Saludos.
  #3 (permalink)  
Antiguo 11/11/2012, 12:17
 
Fecha de Ingreso: julio-2011
Ubicación: Zapopan, Jal. MX
Mensajes: 316
Antigüedad: 12 años, 9 meses
Puntos: 32
Respuesta: Problema con SessionHandlerInterface

Hola GatorV que tal,

Ya intenté ponerle 10 segundos en ini.session.gc_maxlifetime desde php.ini para probarlo pero no pasa nada. Lo que no entiendo por que cuando cierro el navegador y vuelvo a abrir la página la sesión ya no está, se cierra pero no crea el archivo de prueba, como si no se registrase mi manejador y mas bien se utiliza el manejor de sesiones predeterminado. También he intentado con la función session_register_shutdown() pero tampoco funciona.

Otra cosa, ¿por qué si le puse solo 10 segundos en ini.session.gc_maxlifetime no se cierra la sesión en 10 segundos?

Gracias!

Última edición por IXtremeLT; 11/11/2012 a las 12:25
  #4 (permalink)  
Antiguo 11/11/2012, 12:25
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Problema con SessionHandlerInterface

Pegate una leida a esto.
Es muy provable que tengas que corre un ajax, para forzar el cierre de la session por PHP.
Lo que GatorV te dijo, es que PHP no detecta cuando cierran el navegador, recorda que php es lado servidor, y cuando detecta inactividad en la session (tiempo maxlifetime) la cierra, para liverar espacio.
SI, necesitas que si o si se cierre cuando cierran el navegador podrias mirar esto:
http://foros.cristalab.com/ejecutar-...entana-t27057/
O googlear: ejecutar javascript cerrar navegador
Claro esto tambien deja de ser util al cambiar la URL!
__________________
Mono programando!
twitter.com/eguimariano
  #5 (permalink)  
Antiguo 11/11/2012, 12:37
 
Fecha de Ingreso: julio-2011
Ubicación: Zapopan, Jal. MX
Mensajes: 316
Antigüedad: 12 años, 9 meses
Puntos: 32
Respuesta: Problema con SessionHandlerInterface

Hola SirDuque que tal,

En realidad no quiero que se cierre la sesión al cerrar el navegador, lo comento por que esto pasa cuando se cierra el navegador ya que cuando lo vuelvo a abrir la sesión ya no existe pues me vuelve a crear otra nueva, lo que yo quiero es que se ejecute el método SessionHandlerInterface::close() o SessionHandlerInterface::gc() que yo personalize para crear el archivo de prueba cuando ini.session.gc_maxlifetime lo indica.

Como dije, ya puse 10 segundos para que caduque la sesión pero nisiqueira al mantener abierto el navegador se cierra la sesión en 10 segundos ni mucho menos se ejecuta mi manejador de sesiones pues no hay ningun archivo de prueba, solamente cuando forzo el cierre con session_write_close() si se crea el archivo.

Wtf?!
  #6 (permalink)  
Antiguo 11/11/2012, 12:41
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Problema con SessionHandlerInterface

Fijate en tus codigos, mas que nada en la pagina de inicio, o login, si no hay un
session_destroy(); dando vuelta.
__________________
Mono programando!
twitter.com/eguimariano
  #7 (permalink)  
Antiguo 11/11/2012, 14:14
 
Fecha de Ingreso: julio-2011
Ubicación: Zapopan, Jal. MX
Mensajes: 316
Antigüedad: 12 años, 9 meses
Puntos: 32
Respuesta: Problema con SessionHandlerInterface

Cita:
Iniciado por SirDuque Ver Mensaje
Fijate en tus codigos, mas que nada en la pagina de inicio, o login, si no hay un
session_destroy(); dando vuelta.
No tengo nada más que el ejemplo de http://mx2.php.net/manual/es/class.s...rinterface.php.

Creo entender que esto solo funciona mientras se actualize la página y mi objetivo era que funcionara independientemente en el servidor sin necesidad de actualizar la página con el fin que si el cliente cierra el navegador, la sesión se cierre ejecutando mi propio manejador de sesiones para registrar la desconexión en la base de datos.

De esta manera a mi no me sirve, mejor voy a crear un cronjob desde phpmyadmin para que actualize la base de datos cada 5 minutos.

Agradezco su valiosa información, Saludos.

Última edición por IXtremeLT; 11/11/2012 a las 14:23

Etiquetas: sesión, session.php, sessionhandlerinterface, session_write_close(), sesiones
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 22:31.