Heim > Artikel > Backend-Entwicklung > Lösung für das Problem der Sitzungsblockierung in PHP
Dieser Artikel stellt hauptsächlich das Problem und die Lösung der Sitzungsblockierung in der PHP-Programmierung vor. Er analysiert kurz die Prinzipien, Gründe und einfachen Lösungen der PHP-Sitzungsblockierung.
Die Beispiele in In diesem Artikel erfahren Sie mehr über Sitzungsblockierungsprobleme und Lösungen in der PHP-Programmierung. Geben Sie es als Referenz an alle weiter. Die Einzelheiten lauten wie folgt:
Wenn während der Sitzungsnutzung nach dem Öffnen der Sitzung derselbe Browser dasselbe Programm ausführt, werden verschiedene Seiten gesperrt. Dies ist in verschiedenen Browsern nicht der Fall.
Frage: Verursacht session_start die Blockierung?
Also habe ich ein paar Seiten geschrieben und sie getestet und festgestellt, dass die Sitzung die Blockierung verursacht hat, während die anderen beiden Situationen keine Blockierung verursacht haben.
Ich habe die PHP-Fehlerliste überprüft und festgestellt, dass jemand diese Frage gestellt hat:
Beschreibung:
------------
Aufruf session_start() scheint zu warten, bis andere Skripte beendet wurden
die dieselbe Sitzung verwenden. Ich vermute, dass die erste Anfrage die
Sitzungsdatei für die ausschließliche Verwendung sperrt, und die zweite Anfrage blockiert, bis
sie geöffnet werden kann.
Die offizielle Antwort von PHP lautet:
Vielen Dank, dass Sie sich die Zeit genommen haben, uns zu schreiben, aber das ist kein Fehler. Dies wird erwartet. Die Sitzungsdatei ist gesperrt, um eine Beschädigung zu vermeiden.
kombiniert den Sitzungsmechanismus von PHP, um die Ursache der Blockierung zu finden. Da die Sitzungsinformationen von PHP in Dateien geschrieben werden, belegt ein Client eine Sitzungsdatei. Daher wird die Datei beim Aufruf von session_start gesperrt und im Lese-/Schreibmodus gesperrt (da der Wert der Sitzung möglicherweise im Programm geändert werden muss). Auf diese Weise wird der zweite Aufruf von session_start blockiert. .
Die einfachste Lösung:
Ich habe im PHP-Handbuch nachgesehen und eine session_write_close-Funktion gefunden, die Sitzungsdaten schreibt und die Sitzung beendet, also Sitzungsdaten schreibt und schließen Sie gleichzeitig die Sitzung. Daher können wir, nachdem wir mit der Sitzung fertig sind, diese Funktion aufrufen, um die Sitzungsdatei zu schließen und sie zu entsperren. Im Allgemeinen wird die Sitzung zum Aufzeichnen von Benutzeridentitätsinformationen verwendet, damit PHP die Identitätsauthentifizierung durchführen kann. Daher kann das Lesen und Schreiben der Sitzung zu Beginn der Seitenausführung erfolgen. Nach der Ausführung kann die Funktion session_write_close sofort aufgerufen werden .
Das obige ist der detaillierte Inhalt vonLösung für das Problem der Sitzungsblockierung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!