Heim  >  Artikel  >  Backend-Entwicklung  >  Vier Möglichkeiten zum automatischen Löschen einer Sitzung in PHP

Vier Möglichkeiten zum automatischen Löschen einer Sitzung in PHP

PHPz
PHPzOriginal
2023-04-10 09:35:261472Durchsuche

PHP löscht die Sitzung automatisch.

Session ist ein serverseitiger Zustandsverwaltungsmechanismus, der häufig in der Webentwicklung verwendet wird. Der Sitzungsmechanismus kann Informationen über Benutzer in der gesamten Website-Hierarchie speichern, die beim Durchsuchen der Website verwendet werden können. Obwohl Sitzungen den Komfort bieten, Websites benutzerfreundlicher und interaktiver zu machen, belegen Sitzungen den Speicher des Servers, wenn sie nicht rechtzeitig bereinigt werden. Daher kann davon ausgegangen werden, dass abgelaufene Sitzungen durch die automatische Bereinigung gelöscht werden.

In PHP kann die automatische Bereinigung der Sitzung durch die folgenden Methoden erreicht werden.

  1. In php.ini konfigurieren

In der php.ini-Datei können Sie zwei Optionen festlegen, session.gc_probability und session.gc_divisor. Wenn gc_probability geteilt durch gc_divisor gleich 0 ist, wird der Garbage-Collection-Mechanismus der Sitzung gestartet.

Zum Beispiel:

session.gc_probability = 1
session.gc_divisor = 100

Dies bedeutet, dass der Session-Garbage-Collection-Mechanismus dies tut Die Aktivierungswahrscheinlichkeit beträgt 1 %. Der Standardwert für diese Option ist 1, was bedeutet, dass jede Benutzeranforderung versucht, den Garbage-Collection-Mechanismus zu starten.

Um gleichzeitig automatisch den Garbage-Collection-Mechanismus zu starten, können Sie die folgende Option hinzufügen:

session.gc_maxlifetime = 1440

Das bedeutet dass die Sitzung nach 1440 Sekunden (also 24 Minuten) abläuft, wird gelöscht, nachdem nicht darauf zugegriffen wurde.

  1. Legen Sie die Ablaufzeit fest, wenn die Sitzung erstellt wird.

Verwenden Sie die Funktion ini_set(), um die Ablaufzeit der Sitzung festzulegen. Zum Beispiel:

ini_set('session.gc_maxlifetime', 1440);
session_set_cookie_params(1440);

Auf diese Weise dauert die Sitzung 1440 Sekunden (d. h. 24 Minuten) Es läuft später ab und wird gelöscht.

  1. Verwenden Sie einen Timer

Der Timer kann abgelaufene Sitzungen in festgelegten Intervallen löschen. Sie können die Funktion setInterval() verwenden, um einen Timer zu erstellen und dann Sitzungsbereinigungsvorgänge im Timer durchzuführen.

Zum Beispiel:

setInterval(function() {

$expire_time = time() - 1440;
$files = glob(session_save_path() . '/sess_*');
foreach ($files as $file) {
    if (file_exists($file)) {
        if (filemtime($file) < $expire_time) {
            unlink($file);
        }
    }
}

}, 600);

Hier, Timer Die Sitzungsbereinigung wird alle 10 Minuten durchgeführt. Der Pfad der Sitzungsdatei wird über die Funktion session_save_path() ermittelt. Standardmäßig ist er /tmp.

Bei der Verwendung von Timern müssen Sie auch auf die Parallelitätsverarbeitung achten, da andere Benutzer möglicherweise neue Sitzungen erstellen, wenn der Timer Bereinigungsvorgänge durchführt.

  1. Sitzung manuell löschen

Wenn die oben beschriebene Methode schließlich die Anforderungen nicht erfüllen kann, können Sie die Sitzung auch manuell löschen. Wenn der Benutzer beispielsweise die Sitzung verlässt, kann die Sitzung über die Funktion session_destroy() zerstört werden.

Zum Beispiel:

session_start();
// Benutzer-Exit-Vorgang ausführen
session_destroy();

Manuell Die Bereinigungssitzung erfordert, dass Entwickler sie selbst verwalten, was mehr Zeit und Aufwand erfordert, aber auch eine bessere, feinkörnigere Kontrolle bieten kann.

Zusammenfassung

PHP bereinigt die Sitzung automatisch und verbessert gleichzeitig die Leistung der Website. Außerdem kann verhindert werden, dass die Sitzung zu viel Serverspeicher belegt. Durch die Konfiguration von php.ini, Sitzungsablaufzeit, Timer und manueller Bereinigung können Entwickler die Sitzung in verschiedenen Szenarien bereinigen, um die Stabilität und Verfügbarkeit der Website zu verbessern.

Das obige ist der detaillierte Inhalt vonVier Möglichkeiten zum automatischen Löschen einer Sitzung 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