2010-01-14 7 views
-1

je veux régler l'heure de la session sur la limite de 3 min,session.gc_maxlifetime ne fonctionne pas pour moi

i ont utilisé cela dans la page

ini_set ("session.gc_maxlifetime", "50"); ne fonctionne pas

Solution pour cette

if (isset ($ _ SESSION [ 'LAST_ACTIVITY']) & & (time() - $ _SESSION [ 'LAST_ACTIVITY']> 1800)) { // la dernière requête date de plus de 30 minutes session_destroy(); // détruit les données de session dans le stockage session_unset(); // désactive la variable $ _SESSION pour l'exécution} $ _SESSION ['LAST_ACTIVITY'] = time(); // dernière mise à jour de l'horodatage d'activité

+2

Définir "Ne fonctionne pas". –

+1

définir de Ne fonctionne pas: signifie ne pas obtenir la solution positive, après avoir utilisé cette fonction gc_maxlifetime, – Bharanikumar

+0

Qu'est-ce que Pekka signifie réellement: quel résultat obtenez-vous? Comment l'avez-vous essayé? Avez-vous un message d'erreur? –

Répondre

2

La session restera active tant que le fichier restera sur le système de fichiers du serveur. Ils sont nettoyés par un éboueur. Le garbage collector est exécuté environ tous les cents chargements de pages sur le serveur (ce qui est plutôt aléatoire, la charge de la page "tous les cent" est juste une moyenne).

En outre, l'âge de la session est inactif âge, pas l'âge total. La minuterie sera réinitialisée pour cette session chaque fois que l'utilisateur fait une demande.

2

L'unité de la valeur est session.gc_maxlifetime secondes. Donc, vous devrez le régler à 180 secondes pour exprimer 3 minutes. Mais à côté de cela, session.gc_maxlifetime n'est pas fiable (voir this post pour une explication). Vous devriez mieux implémenter cela par vous-même pour que votre session expire après exactement 3 minutes.

3

Trois variables sont utilisées pour définir le comportement de collecte des ordures des variables de session PHP:

  1. session.gc_maxlifetime est la durée de vie en quelques secondes pour les fichiers de session (valeur par défaut: 1440 = 24 minutes)
  2. session.gc_probability est le numérateur de la probabilité pour exécuter le ramasse-miettes (par défaut = 1)
  3. session.gc_divisor est le dénominateur de la probabilité pour exécuter le collecteur de déchets (de defaul t = 100 ou 1000)

Le nominateur et le dénominateur sont utilisés ensemble pour déterminer la probabilité (nominateur/dénominateur). Donc, lorsque session.gc_probability vaut 1 et session.gc_divisor 100, c'est 1/100 = 1%. Donc, 1% de chaque visite de page (= chaque appel session_start) le garbage collector est exécuté.

Si vous souhaitez tester l'expiration de votre session, vous devez définir session.gc_probability et session.gc_divisor sur 1, de sorte que chaque visite de page provoque l'exécution du garbage collector. De plus, vous devez utiliser deux navigateurs différents pour le test. La session du premier navigateur est nettoyée lorsque vous visitez votre page avec le deuxième navigateur (et que la session du premier navigateur a expiré).Dans mes tests, lorsque vous utilisez un seul navigateur, la session est automatiquement étendue, même si elle est obsolète.

Questions connexes