Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erklärung zum Einrichten einer Sitzung mit strenger Kontrolle der Ablaufzeit in PHP

Ausführliche Erklärung zum Einrichten einer Sitzung mit strenger Kontrolle der Ablaufzeit in PHP

墨辰丷
墨辰丷Original
2018-05-22 16:47:232453Durchsuche

In diesem Artikel wird hauptsächlich die Methode zum Einrichten einer Sitzung in PHP vorgestellt, die die Ablaufzeit streng kontrolliert und einen guten Referenzwert hat. Werfen wir einen Blick mit dem Editor unten

1.php-Sitzungsgültigkeitsdauer

PHPs Sitzung-Gültigkeitsdauer beträgt standardmäßig 1440 Sekunden ( 24 Minuten), Wenn der Client länger als 24 Minuten nicht aktualisiert wird, wird die aktuelle Sitzung recycelt und ist ungültig.

Wenn der Benutzer den Browser schließt, endet die Sitzung und die Sitzung wird ebenfalls ungültig.

Sie können session.gc_maxlifetime von php.ini ändern, um den Sitzungslebenszyklus festzulegen, es gibt jedoch keine Garantie dafür, dass die Sitzungsinformationen sofort danach gelöscht werden diese Zeit ist überschritten. Da GC auf Wahrscheinlichkeitsbasis gestartet wird, kann es sein, dass es längere Zeit nicht gestartet wird. Dann ist eine große Anzahl von Sitzungen nach Überschreiten von session.gc_maxlifetime noch gültig.

2.session.gc_maxlifetime, session.gc_probability, session.gc_pisor Beschreibung

session.gc_maxlifetime = 30 bedeutet, wenn die Sitzungsdatei vorhanden ist 30 Sekunden Wenn später nicht darauf zugegriffen wird, gilt sie als abgelaufene Sitzung und wartet auf das GC-Recycling.

Die Wahrscheinlichkeit eines GC-Prozessaufrufs wird über session.gc_probability/session.gc_pisor berechnet, und session.gc_pisor ist standardmäßig auf 1000 eingestellt,

Wenn session.gc_probability = 1000, Dann ruft der GC-Prozess es jedes Mal auf, wenn session_start() ausgeführt wird, um das Recycling durchzuführen.

Das Erhöhen der Wahrscheinlichkeit von session.gc_probability/session.gc_pisor wird helfen, aber es wird einen gravierenden Einfluss auf die Leistung haben.

3. Kontrollieren Sie die Sitzungsablaufmethode streng

1. Verwenden Sie Memcache/Redis, um die Sitzung zu speichern, da der Recyclingmechanismus von Memcache/Redis ist nicht in der Lage, sicherzustellen, dass die Sitzung nach Ablauf der Wahrscheinlichkeit abläuft.

2. Verwenden Sie nur PHP, um es zu implementieren, eine Sitzungsklasse zu erstellen und die Ablaufzeit zu schreiben, wenn die Sitzung geschrieben wird. Stellen Sie beim Lesen anhand der Ablaufzeit fest, ob es abgelaufen ist.

<?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]);
  }
}
?>

Demo:

<?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;); // 已过期
?>

Verwandte Empfehlungen:

Sitzungs-Timeout in PHPStrikte KontrolleBeispiel_PHP-Tutorial

php Strikte KontrolleSitzungsablaufzeit_PHP-Tutorial

php Kontrollieren Sie streng die Ablaufzeit von session_PHP Tutorial_Programming Technology

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung zum Einrichten einer Sitzung mit strenger Kontrolle der Ablaufzeit in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn