2009-10-04 4 views
39

Quelqu'un peut-il me dire combien de temps durera ma session à partir des données ci-dessous? - Je ne suis pas sûr de ce que l'on me ditCombien de temps dure ma session?

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 

Répondre

77

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 de session de PHP est un peu plus compliquée. Parce que les données de session sont supprimées par un garbage collector qui est seulement appelé par session_start avec une probabilité de session.gc_probability divisée par session.gc_divisor. Les valeurs par défaut sont 1 et 100, de sorte que le garbage collector n'est démarré que dans 1% de tous les appels session_start. Cela signifie que même si la session est déjà expirée en théorie (les données de session ont été modifiées plus de session.gc_maxlifetime secondes), les données de session peuvent être utilisées plus longtemps. En raison de ce fait, je vous recommande d'implémenter votre propre mécanisme de délai d'attente de session. Voir my answer to How do I expire a PHP session after 30 minutes? pour plus de détails.

+0

Comment session.cache_expire interagit avec ceci? – matteo

+5

'session.cache_expire' n'influence que la mise en cache HTTP de la réponse du serveur mais n'a aucune influence sur l'expiration de la session. – Gumbo

+1

Oh, je vois, cache_expire fonctionne avec cache_limiter. La documentation de PHP est très floue à ce sujet. Je ne pouvais pas déchiffrer un seul mot de ce qui est documenté ici: http://es1.php.net/manual/en/function.session-cache-expire.php jusqu'à ce que je lis ceci: http: //es1.php .net/manual/fr/function.session-cache-limiter.php Merci @Gumbo – matteo

17

C'est celui-ci. La session durera 1440 secondes (24 minutes).

session.gc_maxlifetime 1440 1440 
5

If session.cookie_lifetime is 0, the session cookie lives until the browser is quit.

EDIT: D'autres ont mentionné le réglage session.gc_maxlifetime. Lorsque la récupération de place de session se produit, le garbage collector supprimera toutes les données de session auxquelles aucun accès n'a été effectué depuis plus de session.gc_maxlifetime secondes. Pour définir le délai de vie du cookie de session, appelez le session_set_cookie_params() ou définissez le paramètre PHP session.cookie_lifetime. 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'expireront pas.

+0

Merci quand je ferme le navigateur et que j'ouvre à nouveau la page, je vois toujours le même sessionId? –

+1

Si votre navigateur était encore en cours d'exécution, alors oui. Le cookie de session expire uniquement lorsque l'application du navigateur se ferme. –

+0

Le cookie oui, mais la session elle-même expirera après 24 minutes sans aucune activité même si vous gardez le navigateur ouvert. –

Questions connexes