Pourquoi session.cookie_lifetime est-il défini sur 23 jours? [fermé]

9

Pour autant que je comprends, la durée de vie de la session chez Drupal est limitée par le session.gc_maxlifetimeréglage est par défaut réglé à environ 2,3 jours.

Alors à quoi ça sert d' session.cookie_lifetimeêtre fixé à 23 jours?

Voici l'extrait de settings.php:

/**
 * Set session lifetime (in seconds), i.e. the time from the user's last visit
 * to the active session may be deleted by the session garbage collector. When
 * a session is deleted, authenticated users are logged out, and the contents
 * of the user's $_SESSION variable is discarded.
 */
ini_set('session.gc_maxlifetime', 200000);

/**
 * Set session cookie lifetime (in seconds), i.e. the time from the session is
 * created to the cookie expires, i.e. when the browser is expected to discard
 * the cookie. The value 0 means "until the browser is closed".
 */
ini_set('session.cookie_lifetime', 2000000);

Veuillez supposer que j'ai défini les deux session.gc_probabilityet session.gc_divisor 1 juste pour cette question.

user5858
la source
Parce que vous ne voulez pas qu'un cookie disparaisse mystérieusement? Vous voulez qu'il soit là pour que la session puisse être invalidée gracieusement? Cela vous pose-t-il un problème réel?
Mołot
C'est tout. Mais ne serait-il pas préférable de faire expirer les cookies à environ 40 heures et la session du serveur à 51 heures? Je veux dire que la durée de vie des cookies est inférieure au délai d'expiration du serveur.
user5858
Ceci est largement basé sur l'opinion et seuls les auteurs PHP peuvent vraiment le dire. Oh, et cela dépend du gestionnaire de session que vous avez décidé d'utiliser. Mais généralement non, vous ne voulez pas d'une session censée être active et utilisable pendant X heures supplémentaires sans que personne ne l'utilise en raison d'un cookie manquant. C'est un gaspillage de stockage. Laisser un cookie plus longtemps signifie qu'il y a presque toujours quelqu'un qui peut utiliser les données de session conservées sur le serveur, donc aucune donnée de session conservée n'est un gaspillage.
Mołot

Réponses:

16

ini_set ('session.gc_maxlifetime', 200000);

  1. Cette valeur est pour le serveur.
  2. Il s'agit d'un paramètre pour la récupération de place de session.
  3. Si la dernière visite des utilisateurs a eu lieu avant 200000, cette session est éligible pour la récupération de place.
  4. Puisqu'il s'agit de GC, la valeur de la session peut être ignorée et non obligatoire. Si une action du GC se produit après que la session a été éligible au GC, elle sera supprimée.
ini_set('session.cookie_lifetime', 2000000);
  1. Cette valeur est pour le navigateur.

  2. Il s'agit de la durée maximale absolue jusqu'à laquelle un navigateur peut conserver ce cookie actif.

  3. Une valeur 0 signifie ici immédiatement ou lorsque le navigateur est fermé.

Pour répondre à votre question en particulier.

  1. Si l'utilisateur ne revient pas sur le serveur en 2,3 jours, sa session sera supprimée lors de l'exécution de la récupération de place de la session.
  2. S'il continue de frapper une page sur le serveur tous les 2,2 (moins de 2,3 jours), sa session restera active. Mais il ne peut être actif que jusqu'à 23 jours à compter de la première génération de la session.
  3. Donc, cela signifie que session.cookie_lifetimec'est la durée de vie maximale absolue d'une session.
Gokul NK
la source
1
Notez le ramasse-miettes probabiliste. Plus de détails: stackoverflow.com/a/1270960 .
digitgopher
Grande réponse, peut également être fait dans php.ini si vous avez accès à ce sur votre serveur , par exemple en /etc/php/5.6/fpm/php.iniajuster (ou ajouter) de réglage: session.gc_maxlifetime = 2000000. Je vous remercie.
therobyouknow