Gleichzeitige AJAX-Anfragen können nicht parallel ausgeführt werden
Es kann ein Problem auftreten, bei dem zwei AJAX-Anfragen vorliegen, eine zum Exportieren von Daten in eine XLSX-Datei und der andere zum Anzeigen von Fortschrittsaktualisierungen können nicht gleichzeitig ausgeführt werden. Die erste Anfrage, die zeitaufwändig ist, scheint die Anzeige der Fortschrittsaktualisierungen zu blockieren.
Erklärung:
Dieses Verhalten kann auf eine Sitzungsblockierung zurückgeführt werden. PHP speichert Sitzungsdaten standardmäßig in Dateien. Wenn eine Sitzung mit session_start() initiiert wird, wird die Sitzungsdatei zum Schreiben geöffnet und gesperrt, um gleichzeitige Änderungen zu verhindern. Daher müssen alle nachfolgenden sitzungsaktivierten PHP-Anfragen warten, bis die vorherige Anfrage die Sperre aufhebt, bevor sie fortfahren können.
Lösung:
Um dieses Problem zu beheben, eine Sie können PHP entweder so konfigurieren, dass eine alternative Sitzungsspeichermethode (z. B. Datenbank, Memcached) verwendet wird, oder den Sitzungsschreibvorgang explizit schließen, nachdem Daten darauf geschrieben wurden. Der letztere Ansatz kann mit der Funktion session_write_close() erreicht werden. Hier ist ein Beispiel:
<code class="php"><?php session_start(); // start session // Write data to session (if necessary) session_write_close(); // close session file, releasing lock // Read or use session data as needed</code>
Durch Schließen des Sitzungsschreibvorgangs kann man die Sitzungsdatei entsperren und die Fortsetzung nachfolgender AJAX-Anfragen zulassen, ohne auf den Abschluss der ersten Anfrage warten zu müssen.
Das obige ist der detaillierte Inhalt vonWarum werden meine gleichzeitigen AJAX-Anfragen nicht parallel ausgeführt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!