Maison >développement back-end >tutoriel php >Explication détaillée de la façon de configurer une session avec un délai d'expiration strict en PHP

Explication détaillée de la façon de configurer une session avec un délai d'expiration strict en PHP

墨辰丷
墨辰丷original
2018-05-22 16:47:232472parcourir

Cet article présente principalement la méthode de mise en place d'une session en PHP qui contrôle strictement le délai d'expiration, qui a une bonne valeur de référence. Jetons un coup d'oeil avec l'éditeur ci-dessous

Période de validité de la session 1.php

La période de validité de la session PHP est par défaut 1440 secondes ( 24 minutes), Si le client ne s'actualise pas pendant plus de 24 minutes, la session en cours sera recyclée et invalide.

Lorsque l'utilisateur ferme le navigateur, la session se termine et la session deviendra également invalide.

Vous pouvez modifier le session.gc_maxlifetime de php.ini pour définir le cycle de vie de la session, mais il n'y a aucune garantie que les informations de la session seront supprimées immédiatement après ce temps est dépassé. Étant donné que le GC est démarré sur la base d'une probabilité, il se peut qu'il ne démarre pas avant longtemps. Ensuite, un grand nombre de sessions sont encore valides après avoir dépassé session.gc_maxlifetime.

2.session.gc_maxlifetime, session.gc_probability, session.gc_pisor description

session.gc_maxlifetime = 30 signifie lorsque le fichier de session est dans 30 secondes S'il n'est pas consulté plus tard, il est considéré comme une session expirée et est en attente de recyclage GC.

La probabilité d'appel du processus GC est calculée via session.gc_probability/session.gc_pisor, et session.gc_pisor est par défaut de 1000,

Si session.gc_probability = 1000, alors le processus GC l'appellera à chaque fois que session_start() est exécuté pour effectuer le recyclage.

Augmenter la probabilité de session.gc_probability/session.gc_pisor aidera, mais cela aura un impact sérieux sur les performances.

3. Contrôlez strictement la méthode d'expiration de la session

1 Utilisez memcache/Redis pour enregistrer la session et définir l'heure d'expiration, car le mécanisme de recyclage de. memcache/redis n'est pas Selon la probabilité, il peut garantir que la session expirera après l'expiration.

2. Utilisez uniquement PHP pour l'implémenter, créez une classe de session et écrivez l'heure d'expiration lorsque la session est écrite. Lors de la lecture, déterminez s'il a expiré en fonction du délai d'expiration.

<?php
/**
 * Session控制类
 */
class Session{
  /**
   * 设置session
   * @param String $name  session name
   * @param Mixed $data  session data
   * @param Int  $expire 超时时间(秒)
   */
  public static function set($name, $data, $expire=600){
    $session_data = array();
    $session_data[&#39;data&#39;] = $data;
    $session_data[&#39;expire&#39;] = time()+$expire;
    $_SESSION[$name] = $session_data;
  }
  /**
   * 读取session
   * @param String $name session name
   * @return Mixed
   */
  public static function get($name){
    if(isset($_SESSION[$name])){
      if($_SESSION[$name][&#39;expire&#39;]>time()){
        return $_SESSION[$name][&#39;data&#39;];
      }else{
        self::clear($name);
      }
    }
    return false;
  }
  /**
   * 清除session
   * @param String $name session name
   */
  private static function clear($name){
    unset($_SESSION[$name]);
  }
}
?>

démo :

<?php
session_start();
$data = &#39;123456&#39;;
session::set(&#39;test&#39;, $data, 10);
echo session::get(&#39;test&#39;); // 未过期,输出
sleep(10);
echo session::get(&#39;test&#39;); // 已过期
?>

Recommandations associées :

délai d'expiration de session en phpcontrôle strictTutoriel Exemple_PHP

php contrôle strict Délai d'expiration de la session_Tutoriel PHP

php Contrôle strictDélai d'expiration de la session_Tutoriel PHP_Technologie de programmation

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn