Вы не можете просто полагаться на session.gc_maxlifetime, поскольку по истечении этого времени сеанс помечается как мусор, и сборщик мусора запускается только с вероятностью 1% по умолчанию (session.gc_probability).
лучший подход, IMHO, это обработать свои данные с истекшим сроком действия.
Вы можете, например, запустить время и сохранить его в переменной сеанса:
<?php $_SESSION['last_seen'] = time();//Update this value on each user interaction. ?>
Позже ... через cron вы можете сделать что-нибудькак это:
<?php
//Get the session id from file name and store it into the $sid variable;
session_id($sid);//try to resume the old session
session_start();
if (isset($_SESSION['last_seen']) && $_SESSION['last_seen'] > $timeout){//Session is expired
//delete file
session_destroy();
}else if (!isset($_SESSION['last_seen')){ //already garbaged
//delete file
session_destroy();
}
?>
Не проверено ... просто идея