In der PHP -Entwicklung ist es ein wichtiges Mittel, um den Benutzerstatus aufrechtzuerhalten. Oft werden Entwickler auf das Problem des Sitzungsdatenverlusts stoßen, wodurch Benutzer Informationen, Warenkorbinhalte und andere wichtige Daten normale Anmeldungen anmelden, und die Erfahrung ist sehr schlecht. Haben Sie ähnliche Situationen begegnet? Tatsächlich ist das Problem höchstwahrscheinlich, dass Sie nicht die Funktion Session_register_Shutdown () korrekt verwenden.
Session_write_close () wurde nicht rechtzeitig gerufen
PHP speichert automatisch Sitzungsdaten am Ende des Skripts. Wenn das Skript jedoch zu früh oder ungewöhnlich ausgeführt wird, wird die Sitzung möglicherweise nicht rechtzeitig geschrieben.
Gleichzeitige Anfragen führen dazu, dass die Sitzungsdatei gesperrt ist
Die Sitzung von PHP ist ein Dateisperrmechanismus. Wenn mehrere Anfragen gleichzeitig dieselbe Sitzung betreiben, kann dies zu einer Blockierung oder sogar zu Verlust führen.
Falsche Verwendung der Sitzungsfunktion <br> Beispielsweise wird Session_destroy () zuerst aufgerufen oder die Sitzung wird nicht korrekt verarbeitet, nachdem Session_Start () aufgerufen wurde.
Session_register_Shutdown () ist eine neue Funktion, die zu PHP 7.0.0 hinzugefügt wurde. Es registriert einen Rückruf, der die Sitzung automatisch schließt und sicherstellt, dass die Sitzungsdaten am Ende des Skripts korrekt in den Speicher geschrieben werden.
Mit anderen Worten, wenn Sie einen benutzerdefinierten Sitzungsverarbeitungsmechanismus oder ein langjähriges Skript in Ihrem Projekt verwenden, kann das korrekte Aufruf von Session_register_Shutdown () sicherstellen, dass der Sitzungsverfahren nicht übersehen wird.
Hier ist ein Beispiel für die Verwendung von Session_register_Shutdown () korrekt:
<?php
// Offen session
session_start();
// Automatisch schließen, wenn das Registrierungsskript endet session,Stellen Sie sicher, dass Daten geschrieben werden
session_register_shutdown();
// aufstellen session Daten
$_SESSION['user'] = 'Zhang San';
// Andere Geschäftslogik wird hier weggelassen
// Kein manueller Anruf erforderlich session_write_close(),Wird automatisch ausgeführt
?>
Anmerkungen:
Diese Funktion kann erst aufgerufen werden, wenn Session_start () aufgerufen wird.
Es wird nicht empfohlen, Session_register_Shutdown () auf Call zu rufen und in demselben Skript manuell auf Call Session_Write_Close () zu rufen, um Konflikte zu vermeiden.
Die traditionelle Art des Schreibens besteht darin, den Entwickler nach dem Schreiben von Sitzungsdaten manuell anzurufen:
<?php
session_start();
$_SESSION['key'] = 'value';
// Manuell schließen session,Stellen Sie sicher, dass Schreiben
session_write_close();
?>
Wenn Ihr Skript jedoch lang ist oder das Schreiben von Sitzungen an mehreren Stellen umfasst, kann es das Schreiben vermissen. Verwenden Sie Session_register_Shutdown () , PHP wird es am Ende des Skripts automatisch für Sie aufrufen.
Stellen Sie sicher, dass Session_Start () in allen Eingängen aufgerufen wird.
Vermeiden Sie gleichzeitige Anfragen, um dieselbe Sitzung zu betreiben, oder entwerfen Sie den Sperrmechanismus während der Parallelität vernünftigerweise.
Rufen Sie nach dem Ändern der Sitzung nicht die Sitzung an, die die Sitzung am Ende des Skripts überspringt.
Verwenden Sie stabile Sitzungsspeichermethoden wie Datenbanken oder Redis.
Die oben genannten ist der Grund, warum Sitzungsdaten verloren gehen und die korrekte Möglichkeit für die Funktion Session_register_Shutdown () verwendet werden. Wenn Sie auf Sitzungsprobleme gestoßen sind, können Sie diese einfache und effektive Funktion genauso gut versuchen, um Ihre PHP -Sitzung stabiler und sicherer zu gestalten.
<?php
// Starten Sie eine Sitzung
session_start();
// Schreiben Sie automatisch zurück, wenn das Registrierungsskript endet session Daten
session_register_shutdown();
// 示例aufstellen session Wert
$_SESSION['username'] = 'demoUser';
// Geschäftsordnung...
?>
Verwandte Tags:
session