Foros del Web » Programando para Internet » PHP »

Variar duración de la sesión en el servidor

Estas en el tema de Variar duración de la sesión en el servidor en el foro de PHP en Foros del Web. He montado una web en la cual los usuarios se pueden loguear para hacer pedidos y consultar una serie de documentación. El control de los ...
  #1 (permalink)  
Antiguo 17/03/2011, 04:04
 
Fecha de Ingreso: agosto-2008
Mensajes: 12
Antigüedad: 15 años, 8 meses
Puntos: 0
Variar duración de la sesión en el servidor

He montado una web en la cual los usuarios se pueden loguear para hacer pedidos y consultar una serie de documentación. El control de los usuarios lo llevo mediante una serie de variables de sesión. Las páginas están alojadas en un servidor compartido (aruba.it), y por tanto no tengo acceso al PHP.INI.

El problema que tengo es que las sesiones me duran 20 minutos, y luego los usuarios tienen que volver a loguearse, lo cual es un auténtico incordio. Así que he estado buscando soluciones para aumentar ese tiempo de sesión, como mínimo a 1 hora, y he probado a usar estas directivas al inicio de cada página:

Código PHP:
ini_set("session.cookie_lifetime""3600");
ini_set("session.gc_maxlifetime""3600");
session_start(); 
Pero no me funciona. O mejor dicho, normalmente no funciona, aunque hay ocasiones (pocas) en las que sí. Y no sé por qué ocurre eso.

¿Alguien puede echarme una mano? ¿Hay alguna otra forma de aumentar la duración de la sessión? También he leído que sería posible mediante el uso el de un archivo .htaccess en el servidor, pero he probado a crear ése archivo, únicamente con el siguiente contenido:

Código:
php_value session.cookie_lifetime 7200
php_value session.gc_maxlifetime 7200
Y el resultado que he obtenido es que el sitio web queda inaccesible (no es posible acceder a la página de inicio ni a cualquier otra desde el navegador).
  #2 (permalink)  
Antiguo 18/03/2011, 03:35
 
Fecha de Ingreso: febrero-2010
Ubicación: cba
Mensajes: 203
Antigüedad: 14 años, 2 meses
Puntos: 16
Respuesta: Variar duración de la sesión en el servidor

pruena con esto:

session_set_cookie_params(2*7*24*60*60);

con esto dura 2 semanas..

saludos
  #3 (permalink)  
Antiguo 18/03/2011, 03:49
 
Fecha de Ingreso: agosto-2008
Mensajes: 12
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Variar duración de la sesión en el servidor

Gracias, gordot, probaré a ver si así lo soluciono. Aunque tampoco necesito que dure tanto, con un par de horas me doy por satisfecho.

Incluso he probado a fijar el session.cookie_lifetime en 0, con lo cual la sesión duraría en teoría hasta que se cerrara el navegador. Y me sigue ocurriendo que a veces funciona, y otras no. Y curiosamente yo diría que funciona por las tardes y no funciona por las mañanas. Sí, ya sé que suena a cosa de locos, pero es lo que parece suceder.

Voy a probar con lo que me ha recomendado gordot, a ver si eso me funciona....
  #4 (permalink)  
Antiguo 18/03/2011, 05:05
 
Fecha de Ingreso: agosto-2008
Mensajes: 12
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Variar duración de la sesión en el servidor

Nada, no funciona. He probado como me ha recomendado gordot, y no hay manera. A los 20 minutos, se me ha cerrado la sesión.
  #5 (permalink)  
Antiguo 22/03/2011, 07:57
 
Fecha de Ingreso: agosto-2008
Mensajes: 12
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Variar duración de la sesión en el servidor

Aunque el tema veo que no despierta gran interés, sigo con el mismo problema, y después de hacer mil y un pruebas, aunque aún no lo tengo solucionado del todo, sí que he logrado algunos progresos, que paso a comentar:

1.- La función session_set_cookie_params($duracion), sólo funciona si se utiliza antes de iniciar sesión con session_start(). Además, lo primero de todo, hay que utilizar la función session_name($nombre) para darle un nombre. Si no, no se logra ningún resultado. Resumiendo el proceso sería:
Código PHP:
session_name($nombre_sesion);
session_set_cookie_params($duracion_sesion);
session_start(); 
2.- Una vez fijada la duración de la función, ésta tiene efecto siempre que el usuario se mueva por el sitio web. Si se deja "abandonado" el navegador, la sesión se cierra al cabo de un tiempo de alrededor de media hora. Investigando por qué se produce esto, parece ser que es el "recolector de basura" del servidor el que finaliza la sesión si no detecta actividad en ella. Para solucionarlo, hay que aumentar también el tiempo de latencia de los procesos antes de ser eliminados, lo cual se puede lograr usando la función ini_set(), también antes de iniciar la sesión:
Código PHP:
ini_set("session.gc_maxlifetime"$duracion_sesion); 
Utilizando todo lo anterior, he conseguido aumentar la duración de mis sesiones hasta alrededor de una hora. No he conseguido superar ese tiempo, a pesar de haber puesto tanto el tiempo de duración de las cookies como el del "recolector de basura" en 7200 seg (2 horas). Sigo haciendo pruebas, si alguien sabe cual puede ser el motivo de que no termine de funcionar del todo, se agradecería la ayuda.

Última edición por Pepin33; 23/03/2011 a las 08:42
  #6 (permalink)  
Antiguo 23/03/2011, 08:47
 
Fecha de Ingreso: agosto-2008
Mensajes: 12
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Variar duración de la sesión en el servidor

Bueno, creo que he encontrado una solución, aunque no sé si es la mejor.

Consiste en cambiar la ruta por defecto donde se almacena la cookie de la sesión, y en vez de hacerlo en la ruta por defecto que tiene el servidor como almacén de cookies, usar una ruta dentro del sistema de archivos de mi propia web.

Así, haciendo:
Código PHP:
session_save_path ('./temp'); 
almaceno las cookies en la carpeta "temp" del sistema de archivos de mi web. Y así no hay ningún proceso automático que las elimine, y las sesiones duran lo que yo les quiera poner que duren.

Desgraciadamente, esto tiene un pequeño problema, y es que los archivos donde se almacenan esas cookies no se eliminan de forma automática, sino que se quedan ahí, acumulándose en la carpeta que les he puesto como ruta, y hay que entrar de vez en cuando y hacer una limpieza a fondo para deshacerse de todos los archivos de sesiones. Por eso supongo que habrá alguna forma mejor de hacerlo. Si alguien sabe cual es, pues le estaría muy agradecido.
  #7 (permalink)  
Antiguo 08/01/2014, 11:44
 
Fecha de Ingreso: julio-2007
Mensajes: 109
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: Variar duración de la sesión en el servidor

Tengo el mismo problema, con una aplicación web, probare lo ultimo y lo comento. Saludos

Etiquetas: servidor, sesión
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 10:29.