web-dev-qa-db-fra.com

Combien de temps durera ma session?

Quelqu'un peut-il me dire combien de temps durera ma session à partir des données ci-dessous? - Je ne sais pas lequel me dit

session.auto_start  Off Off
session.bug_compat_42   Off Off
session.bug_compat_warn On  On
session.cache_expire    180 180
session.cache_limiter   nocache nocache
session.cookie_domain   no value    no value
session.cookie_httponly Off Off
session.cookie_lifetime 0   0
session.cookie_path /   /
session.cookie_secure   Off Off
session.entropy_file    no value    no value
session.entropy_length  0   0
session.gc_divisor  1000    1000
session.gc_maxlifetime  1440    1440
session.gc_probability  1   1
session.hash_bits_per_character 5   5
session.hash_function   0   0
session.name    PHPSESSID   PHPSESSID
session.referer_check   no value    no value
session.save_handler    files   files
session.save_path   /var/lib/php/session    /var/lib/php/session
session.serialize_handler   php php
session.use_cookies On  On
session.use_only_cookies    Off Off
session.use_trans_sid   0   0
43
Keith Donegan

En général, vous pouvez dire session.gc_maxlifetime spécifie la durée de vie maximale depuis le dernier changement de vos données de session ( pas la dernière fois session_start a été appelé!). Mais la gestion des sessions PHP est un peu plus compliquée.

Parce que les données de session sont supprimées par un garbage collector qui n'est appelé que par session_start avec une probabilité de session.gc_probability divisé par session.gc_divisor . Les valeurs par défaut sont 1 et 100, donc le garbage collector n'est démarré que dans 1% de tous les session_start appels. Cela signifie que même si la session a déjà expiré en théorie (les données de session ont été modifiées plus que session.gc_maxlifetime il y a quelques secondes), les données de session peut être utilisé plus longtemps que cela.

Pour cette raison, je vous recommande d'implémenter votre propre mécanisme d'expiration de session. Voir ma réponse à Comment puis-je expirer une session PHP après 30 minutes? pour plus de détails.

83
Gumbo

C'est le bon. La session durera 1440 secondes (24 minutes).

session.gc_maxlifetime  1440    1440
19

Si session.cookie_lifetime Est égal à 0, le cookie de session vit jusqu'à la fermeture du navigateur.

[~ # ~] modifier [~ # ~] : D'autres ont mentionné le paramètre session.gc_maxlifetime. Lorsque le garbage collection de session se produit, le garbage collector supprimera toutes les données de session auxquelles vous n'avez pas accédé depuis plus de session.gc_maxlifetime Secondes. Pour définir la durée de vie du cookie de session, appelez session_set_cookie_params() ou définissez le paramètre session.cookie_lifetime PHP PHP. Si ce paramètre est supérieur à session.gc_maxlifetime, vous devez augmenter session.gc_maxlifetime à une valeur supérieure ou égale à la durée de vie du cookie pour vous assurer que vos sessions n'expirent pas.

Vous recherchez gc_maxlifetime, voir http://php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime pour une description.

Votre session durera 1440 secondes, soit 24 minutes (par défaut).

8
svens