Ejecutar una acción cuando se cierra una sesión

49 views
Skip to first unread message

Leo P

unread,
Jul 23, 2015, 5:48:42 PM7/23/15
to CakePHP en Español
Buenas comunidad.

Tengo la siguiente pregunta.

¿Es posible ejecutar una acción cuando expira una sesión?

Actualmente tengo una acción que realiza un backup cuando el administrador se desloguea, pero como todos sabemos hay veces que los usuarios no cierran sesión, sino más bien cierran los navegadores. Entonces mi intención es que como cuando se cierran los navegadores se destruye la sesión, que esto ejecute la misma acción para realizar el backup.

Espero se entienda ¿Si existe alguna forma de ejecutar una acción cuando expira o se destruye una sesión cuando se cierra el navegador?

Desde ya muchas gracias.

Saludos

joserafael

unread,
Jul 28, 2015, 11:18:58 AM7/28/15
to CakePHP en Español, leandr...@gmail.com
Es imposible que se pueda ejecutar una acción después que se cierre el navegador. La ley de la física no lo permite.

Tal vez con un alert de javascript se pueda realizar pero lo noto complicado y tedioso.

Para realizar los backup se recomienda programar una actividad con el servicio Cron de linux.

Leo P

unread,
Jul 29, 2015, 9:33:39 AM7/29/15
to CakePHP en Español, josec...@gmail.com
Gracias Jose Rafael por responder

En realidad yo lo que quiero hacer es ejecutar una acción cuando se destruye una sesión.

Pasa que además de que cuando el usuario hace un logout, también cuando se cierra el navegador se destruye una sesión.

Si tengo configurado que se realicen los backups 1 vez al día con Cron Jobs, igualmente quería agregar esta funcionalidad de que se haga el backup luego de que el administrador haya terminado de editar el sitio, entonces cuando el administrador activa la acción del logout se realiza el backup, ahora me gustaría que si el administrador no activa el logout pero luego de un tiempo, cuando se destruye la sesión se active el backup.

He visto en la documentación de Cake, que existe un concepto llamado SessionHandler, pero pasa que como no comprendo bien el inglés no puedo terminar de entender de que se trata.  


¿Alguién sabra si con sessión handler puedo detectar cuando se destruyó una sesión?

Gracias

Javier Adrian Rivera Perez

unread,
Jul 31, 2015, 5:56:22 PM7/31/15
to cakep...@googlegroups.com
Hola Leo;

Javascript maneja un evento "unload" que indica cuando se cierra el navegador, el problema es que la página no se puede recargar porque el evento se ejecuta. Hace algún tiempo en un proyecto necesitaba hacer algo similar ya que tenia una validación donde solo un usuario podía iniciar sesion mínimo 2 veces pero muchos usuarios cerraban el navegador entonces al volver intentar acceder  no podian porque ya habia una session activa.

Lo solucione de dos formas:

1 con el evento unload corría un proceso con ajax para que marcara la session como terminada cuando se cerraba el navegador.
2 Como las sessiones las guardaba en bd con un cron verificaba que sessiones estaban abiertas y tenian un  periodo de inactividad mayor a 5 horas y las cerraba.




Cordialmente;

Adrian Rivera
Ingeniero de Software
Colombia, Pereira Rda
Cel: +57 311 644 6541
skype: aderiver
twitter: @aderiver_


--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP en Español" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cakephp-esp...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a cakep...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/cakephp-esp.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Christian Quispe

unread,
Aug 2, 2015, 2:18:17 PM8/2/15
to CakePHP en Español
Tio. 
Usa Beforeunload http://stackoverflow.com/questions/4376596/jquery-unload-or-beforeunload para enviar alguna petición a un controlador de las cosas que quieras hacer. Si ten un token y un job que los analice para determinar q si ya se fue y asi aplicar las operaciones
Reply all
Reply to author
Forward
0 new messages