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.