Ver Mensaje Individual
  #2 (permalink)  
Antiguo 14/06/2008, 06:55
Avatar de almarin
almarin
 
Fecha de Ingreso: junio-2008
Mensajes: 44
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: Duración de sesiones

Hola:

Cuando estableces gc_maxlifetime, símplemente dices el tiempo máximo de sesión, pero siempre que el recolector de basura de sesiones (garbage collection, de ahí lo de gc_...) se ejecute. El GC no se ejecuta SIEMPRE, sino que hay una probabilidad de que se ejecute, que por defecto es:

session.gc_probability = 1
session.gc_divisor = 100

Es decir, se ejecutaría un 1% de las veces que ejecutes tu script. Por eso, si estás programando en local y sólo eres tu quien está haciendo peticiones a tu servidor web, hay muy poca probabilidad de que el gc se ejecute.

Para mantener un control más fino, te recomiendo que hagas algo como esto:
Código PHP:

    
if (($_SESSION['session_time']+$conf['session']['time'])<time()){
        
$_SESSION=array();
        
header('location: '.__BASE."login.php?referer=".urlencode($_SERVER['PHP_SELF']));
        exit;
    }else{
        
$_SESSION['session_time']=time();
    } 
Que no es, ni más ni menos, que ir guardando en la sesión el timestamp de la última operación que se realizó, y si es mayor a un número dado (yo lo indco como $conf['session']['time']), entonces caduca.

Espero que te sea de ayuda.