PHP
Referenzliste
session_set_save_handler
Session-Funktionen
Befehl:
bool session_set_save_handler ( callback $open , callback $close , callback $read , callback $write , callback $destroy , callback $gc )
Seit PHP 5.4 ist es möglich, den folgenden Prototyp registrieren:
bool session_set_save_handler ( SessionHandlerInterface $sessionhandler [, bool $register_shutdown = true ] )
Seit PHP 5.4 ist es möglich, den folgenden Prototyp registrieren:
bool session_set_save_handler ( SessionHandlerInterface $sessionhandler [, bool $register_shutdown = true ] )
Parameter-Liste:
Beschreibung | |
---|---|
open | Die öffnen-Routine funktionert wie ein Konstruktor in einer Klasse und wird ausgeführt, wenn die Session geöffnet wird. Sie erwartet zwei Parameter: als Ersten den Speicherpfad und als Zweiten den Namen der Session. |
close | Die schliessen-Routine funktionert wie ein Destruktor in einer Klasse und wird am Ende der Session ausgeführt. |
read | Damit die Speicherroutine funktioniert wie erwartet, muss die lesen-Routine immer eine Zeichenkette zurückgeben. Wenn es keine Daten zu lesen gibt, geben Sie eine leere Zeichenkette zurück. Rückgabewerte anderer Routinen werden in boolesche Ausdrücke umgewandelt. TRUE für einen Erfolg, FALSE für einen Fehler. |
write | Die schreiben-Routine, die aufgerufen wird, wenn Session-Daten gespeichert werden sollen. Diese Funktion erwartet zwei Parameter: eine Session-ID und die zugehörigen Daten. Hinweis: Die schreiben-Routine wird nicht ausgeführt, bevor die Ausgabe abgeschlossen ist. Deshalb werden auch niemals Fehlermeldungen der schreiben-Routine im Browser erscheinen. Wenn die Ausgabe von Fehlermeldungen nötig ist, sollte diese stattdessen in eine Datei geschrieben werden. |
destroy | Die löschen-Routine wird ausgeführt, wenn eine Session mittels session_destroy() gelöscht wird. Sie erwartet die Session-ID als einzigen Parameter. |
gc | Der Speicherbereiniger (garbage collector) wird ausgeführt, wenn der Session-Speicherbereiniger ausgeführt wird. Er erwartet die maximale Session-Verfallszeit als einzigen Parameter. |
Seit PHP 5.4 hat es 2 Prototypen-Funktionen: | |
Eine Instanz einer Klasse Umsetzung SessionHandlerInterface wie SessionHandler, als Session-Handler registrieren. Seit PHP 5.4 nur. | |
Register session_write_close() als register_shutdown_function()-Funktion. |
Rückgabewerte:
Gibt bei Erfolg
TRUE
zurück. Im Fehlerfall wird FALSE
zurückgegeben. Beschreibung:
session_set_save_handler() setzt die benutzerdefinierten Session-Speicherfunktionen, die zur Speicherung und Wiederherstellung von zur Session gehörigen Daten verwendet werden. Dies ist äusserst nützlich, wenn eine andere als die mit PHP-Sessions zur Verfügung stehende Art der Speicherung, z.B. die Speicherung der Session-Daten in einer lokalen Datenbank, bevorzugt wird.
Aktiv in Version:
(PHP 4, PHP 5, PHP 7)
Warnung:
Warnung:
Ab PHP 5.0.5 werden die Routinen write und close nach dem Zerstören von Objekten aufgerufen und können deshalb keine Objekte verwenden oder Exceptions (Fehler-, Ausnahmesituationen) auslösen. Objekt-Destruktoren können aber Sessions verwenden.
Es ist möglich, session_write_close() über den Destruktor aufzurufen, um dieses Henne-Ei Problem zu lösen.
Bei manchen SAPIs ändert sich das aktuelle Arbeitsverzeichnis, falls die Session durch die Beendigung des Skripts geschlossen wird. Mittels session_write_close() ist es möglich, die Session schon früher zu schliessen.
Ab PHP 5.0.5 die Schreib-und Schliess-Handler werden nach Objektzerstörung genannt und kann daher nicht verwenden oder Objekte werfen Ausnahmen. Ausnahmen sind nicht möglich, da erwischt wird nicht gefangen werden, noch wird jede Ausnahme Spur angezeigt werden, und die Ausführung wird nur unerwartet aufhören werden. Die Objekt-Destruktoren können jedoch verwenden Sitzungen.
Es ist möglich, session_write_close() aus der destructor rufen, um dieses Henne-Ei-Problem zu lösen, aber der sicherste Weg ist, um die Shutdown-Funktion, wie oben beschrieben registrieren.
Siehe auch:
Registrieren Sie eine Funktion zur Ausführung beim Herunterfahren
Session-Shutdown-Funktion für PHP 5.4.0 +
session_set_save_handler() - Beispiel:
Eingabe:
Das folgende Beispiel liefert eine dateibasierte Session-Speicherung, die der Standard-Speicherroutine files der PHP-Sessions ähnlich ist. Dieses Beispiel kann problemlos erweitert werden, dass es Datenbank-Speicherung mittels ihrer bevorzugten PHP-gestützten Datenbank beinhaltet.
<?php function oeffne($speicherpfad, $session_name) { global $sess_speicherpfad; $sess_speicherpfad = $speicherpfad; return(true); } function schliesse() { return(true); } function lese($id) { global $sess_speicherpfad; $sess_datei = "$sess_speicherpfad/sess_$id"; return (string) @file_get_contents($sess_datei); } function schreibe($id, $sess_daten) { global $sess_speicherpfad; $sess_datei = "$sess_speicherpfad/sess_$id"; if ($fp = @fopen($sess_datei, "w")) { $return = fwrite($fp, $sess_daten); fclose($fp); return $return; } else { return(false); } } function loesche($id) { global $sess_speicherpfad; $sess_datei = "$sess_speicherpfad/sess_$id"; return(@unlink($sess_datei)); } function gc($maxlifetime) { global $sess_speicherpfad; foreach (glob("$sess_speicherpfad/sess_*") as $dateiname) { if (filemtime($dateiname) + $maxlifetime < time()) { @unlink($dateiname); } } return true; } session_set_save_handler("oeffne", "schliesse", "lese", "schreibe", "loesche", "gc"); session_start(); // verfahren Sie mit Sessions wie gewohnt ?>
Beschreibung:
Beschreibung | |
---|---|
5.4.0 | Hinzugefügt SessionHandlerInterface für die Umsetzung Sitzung Handler und SessionHandler internen PHP-Session-Handler aus. |
session_set_save_handler() - Beispiel 2:
Eingabe:
Der folgende Code ist für PHP Version 5.4.0 und höher. Wir zeigen hier nur den Aufruf gibt, kann die volle beispielsweise in der SessionHandlerInterface synposis oben verwiesen wurde.
<?php class MySessionHandler implements SessionHandlerInterface { // Schnittstellen implementieren hier } $handler = new MySessionHandler(); session_set_save_handler($handler, true); session_start(); // fahren Sie durch Schlüssel von $_SESSION setzen und zu erhalten Werte ?>
Beschreibung:
Beschreibung | |
---|---|
5.4.0 | Hinzugefügt SessionHandlerInterface für die Umsetzung Sitzung Handler und SessionHandler internen PHP-Session-Handler aus. |
Session-Funktionen