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['data'] = $data; $session_data['expire'] = 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]['expire']>time()){ return $_SESSION[$name]['data']; }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 = '123456'; session::set('test', $data, 10); echo session::get('test'); // 未过期,输出 sleep(10); echo session::get('test'); // 已过期 ?>
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!