Heim  >  Artikel  >  Backend-Entwicklung  >  So richten Sie mit PHP eine Sitzung mit strenger Ablaufzeit ein

So richten Sie mit PHP eine Sitzung mit strenger Ablaufzeit ein

jacklove
jackloveOriginal
2018-06-09 10:25:102323Durchsuche

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 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.

3. Kontrollieren Sie die Sitzungsablaufmethode streng

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[&#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:

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

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!

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