Spécifier le temps d'expiration des données de la session juste avant d'appeler la commande session_start().
// Démarrer une session de 2h ( = 120 minutes = 7200 secondes) $nbMinutes=120; ini_set('session.gc_maxlifetime',$nbMinutes*60); ini_set('session.cache_expire',$nbMinutes); session_start();
LA solution à tous mes problèmes d'expiration de session |
---|
Malgré les temps d'expiration spécifiés ci-dessus, mes sessions continuaient à être expirées prématurément.
Il semble que si d'autres scripts PHP tournent sur le même serveur avec d'autres spécifications, c'est la durée la plus petite qui est utilisée pour effacer les sessions considérées comme trop vieilles.
Pour éviter cela, il faudrait que les sessions d'un script soient stockées séparément, comme le conseille ce commentaire sur StackOverflow.
Par exemple, sur mon serveur les sessions sont stockées dans /var/lib/php5. Pour ajouter un sous-dossier marc je fais ceci avant l'appel de session_start() :
$sessionSavePath = ini_get('session.save_path') . '/marc'; if(!is_dir($sessionSavePath)){ mkdir($sessionSavePath); } ini_set('session.save_path', $sessionSavePath);