session_gc

(PHP 7 >= 7.1.0, PHP 8)

session_gcFührt die Garbage Collection der Session-Daten durch

Beschreibung

session_gc(): int|false

session_gc() wird verwendet, um die GC (Garbage Collection) der Session-Daten durchzuführen. PHP führt standardmäßig eine wahrscheinlichkeitsbasierte Session-GC durch.

Die wahrscheinlichkeitsbasierte GC funktioniert einigermaßen, bringt aber einige Probleme mit sich. 1) Die Session-Daten von Websites mit geringem Datenverkehr werden möglicherweise nicht innerhalb der gewünschten Frist gelöscht. 2) Bei Websites mit hohem Datenverkehr kann die GC zu häufig erfolgen. 3) Die GC wird durchgeführt, während eine Anfrage des Benutzers bearbeitet wird, was zu einer zusätzlichen Verzögerung für den Benutzer führt.

Daher wird empfohlen, die GC auf Produktivsystemen regelmäßig auszuführen, bei UNIX-ähnlichen Systemen z. B. mit "cron". Es ist sicherzustellen, dass die wahrscheinlichkeitsbasierte GC deaktiviert ist, indem session.gc_probability auf 0 gesetzt wird.

Parameter-Liste

Diese Funktion besitzt keine Parameter.

Rückgabewerte

session_gc() gibt bei Erfolg die Anzahl der gelöschten Session-Daten zurück. Bei einem Fehler wird false zurückgegeben.

Alte Speicherverfahren geben nicht die Anzahl der gelöschten Session-Daten zurück, sondern nur das Flag für Erfolg/Fehlschlag. In diesem Fall ist die Anzahl der gelöschten Session-Daten immer 1, unabhängig von der tatsächlichen Anzahl der gelöschten Daten.

Beispiele

Beispiel #1 session_gc()-Beispiel für Taskmanager wie cron

<?php
// Hinweis: Dieses Skript muss vom selben Benutzer ausgeführt werden
// wie der Prozess des Webservers.

// Um den Zugriff auf den Session-Datenspeicher zu initialisieren,
// ist eine aktive Session erforderlich.
session_start();

// Führt GC sofort aus
session_gc();

// Löschen der von session_gc() erzeugten Session-ID
session_destroy();
?>

Beispiel #2 session_gc()-Beispiel für ein Skript, auf das ein Benutzer Zugriff hat

<?php
// Hinweis: Es wird empfohlen, dass session_gc() von einem Taskmanager-Skript
// verwendet wird, aber es kann auch wie folgt verwendet werden.

// Wird verwendet, um den letzten GC-Zeitpunkt zu überprüfen
$gc_time '/tmp/php_session_last_gc';
$gc_period 1800;

session_start();
// GC nur dann ausführen, wenn die GC-Periode verstrichen ist,
// d. h. session_gc() bei jeder Anfrage aufzurufen, ist eine Verschwendung
// von Ressourcen.
if (file_exists($gc_time)) {
    if (
filemtime($gc_time) < time() - $gc_period) {
        
session_gc();
        
touch($gc_time);
    }
} else {
    
touch($gc_time);
}
?>

Siehe auch

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top