Warum sollte session_write_close in langen Abfragen verwendet werden?

8

Ich habe einen Artikel über lange Umfragen bei Nolithius . Unter dem Abschnitt PHP, das über die gesamte Sitzung schläft wird geschrieben, dass die Funktion session_write_close aufgerufen werden sollte, um zu verhindern, dass die gesamte Sitzung in einen Deadlock gerät. Was genau ist hier mit Deadlock gemeint? Bedeutet dies, dass ohne diese Funktion keine andere Seite aus derselben Domäne, die auf der Client-Seite geöffnet ist, AJAX-Daten von anderen Skripten (wie diesem) empfangen kann, bis diese die Ausführung beendet und das Ergebnis zurückgegeben hat? Warum sollte das passieren? Und wie kann session_write_close hier helfen? Werden Sie nicht die gesamte Personalisierung von der Clientseite entfernen, wenn er das nächste Mal eine Seite von dieser Domäne anfordert, nachdem er Daten von dieser Anfrage erhalten hat?

    
SexyBeast 13.09.2012, 07:23
quelle

1 Antwort

17

Das ist mein Verständnis:

Wenn dateibasierte Sitzungen verwendet werden, sperrt jede Anfrage die Datei buchstäblich bis zum Ende der Anfrage.

Das bedeutet, dass die nächste Anfrage (die auch die Sitzungsdaten verwendet) auf die Freigabe der Sperre warten muss.

Dies wird verwendet, um die Beschädigung von Sitzungsdaten zu vermeiden.

Die Verwendung von session_write_close() bereinigt (ohne Sitzungsdaten zu verlieren) und gibt die Sperrung früher für die Datei frei, damit andere Anfragen fortgesetzt werden können.

Dies ist eine gute Übung, besonders wenn Sie Skripte haben, die wahrscheinlich viel schlafen.

    
zaf 13.09.2012, 07:30
quelle

Tags und Links