Ich habe einen Artikel über lange Umfrage unter Nolithius gelesen. Unter dem Abschnitt PHP schläft über die gesamte Sitzung, wird geschrieben, dass die session_write_close
Funktion aufgerufen werden sollte, um die gesamte Sitzung zu einem Deadlock zu verhindern. 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 Personalisierung von der Client-Seite entfernen, wenn Sie das nächste Mal eine Seite von dieser Domain anfordern, nachdem er Daten von dieser Anfrage erhalten hat?Warum sollte session_write_close in langen Abfragen verwendet werden?
8
A
Antwort
15
Das ist mein Verständnis:
Wenn Datei-basierten Sitzungen jede Anforderung buchstäblich die Datei sperrt die Anforderung bis zum Ende verwendet werden.
Das bedeutet, dass die nächste Anfrage (die auch die Sitzungsdaten verwendet) auf die Freigabe der Sperre warten muss.
Dies wird verwendet, um eine Beschädigung der Sitzungsdaten zu vermeiden.
Die Verwendung von session_write_close()
wird bereinigen (aber keine Sitzungsdaten verlieren) und die Sperre früher für die Datei freigeben, so dass andere Anforderungen fortgesetzt werden können.
Dies ist eine gute Übung, besonders wenn Sie Skripte haben, die wahrscheinlich viel schlafen.
Verwandte Themen
- 1. Warum sollte AS in MySQL Abfragen verwendet werden, anstatt den Namen der Tabelle zu schreiben?
- 2. Sollte ViewData niemals verwendet werden?
- 3. Warum sollte der "=" R-Operator nicht in Funktionen verwendet werden?
- 4. Warum sollte in diesem Fall eine ConcurrentQueue verwendet werden?
- 5. Wann sollte Flask.g verwendet werden?
- 6. Wann sollte $ .extend ({...}) verwendet werden?
- 7. Wann sollte wkWebView verwendet werden?
- 8. Wann sollte FOUNDATION_EXPORT verwendet werden?
- 9. Wann sollte StringBuilder verwendet werden?
- 10. Wann sollte WS_EX_NOREDIRECTIONBITMAP verwendet werden?
- 11. Wo sollte Rx verwendet werden?
- 12. Wann sollte range.value verwendet werden?
- 13. Warum sollte Ruby nicht zum Erstellen einer Spinne verwendet werden?
- 14. Warum sollte `git commit` im losgelösten Zustand verwendet werden?
- 15. Warum sollte die Iteration anstelle der Tail-Rekursion verwendet werden?
- 16. Warum sollte Homebrew zur Installation von Python verwendet werden?
- 17. Warum sollte OutOfMemoryException ausgelöst werden, während PLINQ Take() verwendet wird?
- 18. Warum sollte Docker oben auf einer virtuellen Maschine verwendet werden?
- 19. Xcode | Warum sollte eine Startbildschirmdatei über die Startbilderquelle verwendet werden?
- 20. Warum sollte AttributeUsage AllowMultiple beim Erstellen von Attributen verwendet werden?
- 21. Wann sollte in Rust inline verwendet werden?
- 22. Sollte PHP_EOL in E-Mails verwendet werden?
- 23. Wann sollte assert() in Matlab verwendet werden?
- 24. Sollte MEF in einer Produktionsanwendung verwendet werden
- 25. Sollte mailto in HTML5 verwendet werden?
- 26. Wann sollte die didMoveToWindow-Methode verwendet werden?
- 27. Wann sollte StringProperty über String verwendet werden?
- 28. Wann sollte Theme.AppCompat vs ThemeOverlay.AppCompat verwendet werden?
- 29. Angular2/RXJS - Umgang mit potenziell langen Abfragen
- 30. Wann sollte ein neuer Ausnahmetyp verwendet werden?
Wird nur die Datei, die gerade schläft, gesperrt, oder ist die gesamte Domäne gesperrt, was andere AJAX-Anfragen an andere Skripte, Pageroads usw. nicht erlaubt? – SexyBeast
Wenn Sie so aussehen, ja, wird die gesamte Domäne gesperrt - Wenn Sie alle Ihre Skripte öffnen und die Sitzung verwenden. Am besten ist es, die Sitzung selektiv zu öffnen und zu schließen, wann und wo Sie sie benötigen - anstatt einen umfassenden Sitzungszugriff zu erstellen. – zaf
Also, wenn ich 'session_write_close' verwende, wird das nicht die Sitzung beenden? Das heißt, wenn der Benutzer eine andere Seite von dieser Domäne anfordert, beginnt er dann eine neue Sitzung? – SexyBeast