La session est perdue après environ 25 minutes

J’utilise PHP 5.5.38 sur le serveur Apache 2.4.16. J’ai le problème de perdre la session après quelque temps (environ 25 minutes). J’ai trouvé ces parameters dans le fichier php.ini

session.gc_maxlifetime = 1440
session.gc_probability = 10

Mais dans le code, ces valeurs ont été définies. Le code ressemble à ceci

ini_set('session.gc_maxlifetime', 60*60*24*7); ini_set('session.use_cookies', 1); ini_set('session.gc_probability', 0); 

et je les ai confirmés en retournant les anciennes valeurs, ce qui veut dire qu’elles ne font pas défaut ou autre chose.

Je ne sais pas où chercher pour trouver la cause de la perte de la session. Toute idée ou suggestion serait grandement appréciée.

Lorsque vous définissez une valeur de configuration avec ini_set() , cela ne dure que pendant l’exécution du script en cours:

L’option de configuration conservera cette nouvelle valeur pendant l’exécution du script et sera restaurée à la fin du script.

Et, lorsqu’il y a plusieurs valeurs pour session.gc_maxlifetime , le ramasse-miettes utilise le plus bas:

Si différents scripts ont des valeurs différentes de session.gc_maxlifetime, mais partagent le même endroit pour stocker les données de session, le script avec la valeur minimale va nettoyer les données.

Vous devez donc avoir les affectations ini_set() dans chaque page où vous utilisez des sessions ou, mieux encore, modifier directement le fichier php.ini en fonction des valeurs dont vous avez besoin.

Notez que 25 minutes est environ 1440 secondes (24 minutes), donc il utilise définitivement la valeur de php.ini .

  • ini_set()
  • session.gc_maxlifetime référence