In der täglichen PHP -Entwicklung begegnen wir häufig Benutzern, die bestimmte Einstellungen während des Betriebs ändern, jedoch aus verschiedenen Gründen (z. B. plötzliche Schließung des Browsers, Trennung des Netzwerks usw.) nicht rechtzeitig gespeichert werden, was zu einem Rückgang der Benutzererfahrung oder sogar zu Datenverluste führt. Um dieses Problem zu lösen, bietet PHP eine Funktion, die viele Entwickler ignorieren - Session_register_Shutdown () , mit der wir am Ende des Sitzungslebenszyklus die erforderlichen Aufräumarbeiten und Datenpersistenzvorgänge durchführen können.
Session_register_Shutdown () ist ein von PHP bereitgestelltes Tool zum Registrieren von Rückruffunktionen, die automatisch aufgerufen werden, wenn die Sitzung schließt. Es funktioniert ähnlich wie bei Register_Shutdown_Function () , ist jedoch dem Sitzungsverarbeitungsfluss gewidmet, um sicherzustellen, dass es vor dem Ende des Skripts oder der Benutzeranforderung beendet wird.
Durch die Verwendung dieser Funktion können wir Daten automatisch bestehen, ohne die Einstellungen explizit zu speichern, um den Verlust wichtiger Informationen zu vermeiden.
Angenommen, wir haben eine Einstellungsseite, auf der Benutzer einige Einstellungen wie Themenfarbe, Schriftgröße, Sprache usw. ändern können. Wenn der Benutzer die Seite schließt, ohne auf die Schaltfläche "Speichern" nach der Änderung zu klicken, gehen diese Änderungen unter normaler Logik verloren.
Wir können diese Änderungen jedoch zuerst in $ _Session vorübergehend speichern und dann Session_register_Shutdown () verwenden, um die Speicherlogik automatisch aufzurufen, wenn die Sitzung geschlossen ist.
Hier ist ein vollständiges Code -Beispiel, das zeigt, wie die Benutzereinstellungen automatisch mithilfe von Session_register_Shutdown () gespeichert werden.
<Code> & lt;? PHP Session_start (); // Benutzereinstellungen simulieren
if ($ _server ['request_method'] === 'post') {
$ _Session ['user_Setings'] = [
'themen' => $ _post ['thema'] ?? 'Licht',
'Sprache' => $ _post ['Sprache'] ?? 'en',
];
}
// Rückruffunktion beim Registrieren einer Sitzung ist geschlossen
Session_register_Shutdown (function () {
if (isset ($ _ session ['user_setings'])) {
SARE_USER_SETTINGS ($ _ Session ['user_Setings']);
}
});
Funktion Save_User_Settings (Array $ Einstellungen): void {
// Unter der Annahme, dass die Benutzer -ID 123 ist, sollten die tatsächlichen Anmeldeinformationen im tatsächlichen Projekt verwendet werden.
$ user_id = 123;
// Schreiben Sie Einstellungen in die Datenbank oder persistierende Speicherung
$dsn = 'mysql:host=localhost;dbname=myapp;charset=utf8mb4';
$pdo = new PDO($dsn, 'dbuser', 'dbpass');
$stmt = $pdo->prepare("UPDATE user_settings SET theme = :theme, language = :language WHERE user_id = :user_id");
$stmt->execute([
':theme' => $settings['theme'],
':language' => $settings['language'],
':user_id' => $user_id,
]);
}
?>
</code>
Der Schlüssel zu diesem Code ist, dass auch wenn der Benutzer nicht auf die Schaltfläche Speichern klickt, die Einstellungen automatisch gespeichert werden, solange die Anfrageausführung das Ende erreicht.
Stellen Sie sicher, dass die Benutzerauthentifizierung abgeschlossen ist : Überprüfen Sie vor dem Speichern der Einstellungen die Legitimität des Benutzers, um nicht autorisierte Vorgänge zu verhindern.
Vermeiden Sie eine wiederholte Ausführung : Es wird empfohlen, Flag -Bits festzulegen, um zu verhindern, dass die Speicherlogik auf einigen Seiten mehrfach aufgerufen wird.
Leistungsoptimierung : Wenn sich die Einstellungen häufig ändern, können Sie die Änderungsmarke festlegen und nur dann speichern, wenn sich die Einstellungen ändern, um den Datenbankdruck zu reduzieren.
Session_register_Shutdown () bietet eine leichte und elegante Möglichkeit, die Schlüssellogik am Ende einer Benutzersitzung zu verarbeiten, insbesondere für Szenarien wie automatisches Speichern von Benutzereinstellungen, Reinigen von temporären Ressourcen und das Aufzeichnen von Benutzern. In großen Anwendungen kann die Nutzung dieser Funktion die Benutzererfahrung und die Datensicherheit erheblich verbessern.