Benutzer ist auf einer PHP-Website angemeldet> Ich starte Apache neu> Benutzer muss sich erneut anmelden.
Wie kann man das verhindern? (Ich möchte nicht, dass sich der Benutzer erneut anmelden muss.)
Benutzer ist auf einer PHP-Website angemeldet> Ich starte Apache neu> Benutzer muss sich erneut anmelden.
Wie kann man das verhindern? (Ich möchte nicht, dass sich der Benutzer erneut anmelden muss.)
Antworten:
Das Speichern eines Sitzungstokens an einem anderen Speicherort als Sicherung würde dieses Problem verhindern. Sie können Ihre Hauptinformationen weiterhin behalten $_SESSION
, aber ein Backup-Token behalten:
In dieser StackOverflow-Frage finden Sie möglicherweise Hilfe: Best Practice für Sitzungszeitlimits und dauerhafte Anmeldung in PHP .
Ihre Sitzungsdaten sollten nicht verloren gehen, nur weil Apache heruntergefahren oder neu gestartet wird, es sei denn, die Sitzungsdaten werden im Speicher gespeichert und nicht auf der Festplatte gesichert (entweder vom Dateisystem oder von der Datenbank). Andernfalls könnten Sie den gesamten Server neu starten und die Sitzung würde weiterhin bestehen bleiben. Sitzungsdaten sind so konzipiert, dass sie langfristig gespeichert werden. Die Sitzung geht nur verloren, wenn:
Die SID geht verloren. Die Sitzungsdaten sind weiterhin serverseitig vorhanden, aber der Client kann die SID nicht wiederherstellen und kann daher nicht dieselbe Sitzung erneut starten. Dies kann passieren, wenn das SID-Cookie abläuft (wenn es sich um ein Cookie handelt) oder die Sitzungslinks verloren gehen (wenn die SID ein URL-Parameter ist) oder die SID serverseitig nicht festgelegt oder geändert wird, ohne den Client zu benachrichtigen.
Die Sitzungsdaten werden serverseitig gelöscht. Dies geschieht normalerweise, wenn der PHP Session Garbage Collector ausgeführt wird und die Sitzungsdatei älter als session.gc_maxlifetime ist (standardmäßig 24 Minuten). Andernfalls kann es vorkommen, dass die Anwendung die Sitzung explizit löscht . Auf einigen Servern hat der Administrator möglicherweise auch einen Cronjob konfiguriert, um alte Sitzungsdaten regelmäßig zu bereinigen.
Ermöglicht durch die Verwendung des richtigen Arguments mit Apache:
apache2ctl -k graceful
Apache wird neu gestartet, ohne die aktuellen Sitzungen zu verlieren.