Heim > Artikel > Backend-Entwicklung > So richten Sie mit PHP eine Sitzung mit strenger Ablaufzeit ein
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.
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 der GC Der Prozess wird jedes Mal aufgerufen, wenn session_start() ausgeführt wird, um das Recycling durchzuführen.
Das Erhöhen der Wahrscheinlichkeit von session.gc_probability/session.gc_pisor hilft zwar, hat aber gravierende Auswirkungen auf die Leistung.
1. Verwenden Sie Memcache/Redis, um die Sitzung zu speichern, da Memcache /redis Der Recyclingmechanismus basiert nicht auf Wahrscheinlichkeit und kann sicherstellen, dass die Sitzung nach Ablauf ungültig wird.
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:
<?phpsession_start();$data = '123456'; session::set('test', $data, 10);echo session::get('test'); // 未过期,输出sleep(10);echo session::get('test'); // 已过期?>
In diesem Artikel wird erläutert, wie Sie mit PHP eine Sitzung einrichten, die die Ablaufzeit streng kontrolliert. Bitte beachten Sie die chinesische PHP-Website für verwandte Inhalte.
Verwandte Empfehlungen:
Anweisungen zur Verwendung der MySQL-Zeitstempelformatierungsfunktion from_unixtime
Informationen zu den MySQL-Funktionen concat und group_concat Anweisungen zur Verwendung
Erklärung zum Umgang mit MySQL-Innodb-Startfehlern und nicht möglichem Neustart
PHP Chinesisch-Website-Lernen Thema:PHP-Sitzung (einschließlich Bilder, Texte, Videos, Fälle)
Das obige ist der detaillierte Inhalt vonSo richten Sie mit PHP eine Sitzung mit strenger Ablaufzeit ein. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!