AJAX-Anfragen werden nicht gleichzeitig ausgeführt
Um die Leistung zu optimieren, werden zwei gleichzeitige AJAX-Anfragen in einer Webanwendung verwendet, um den Fortschritt zu verfolgen einer langwierigen Aufgabe. Die zweite Anfrage bleibt jedoch stehen, bis die erste abgeschlossen ist.
Ursache: Sitzungsblockierung
PHP verwendet standardmäßig einen dateibasierten Ansatz für die Sitzungsspeicherung. Wenn eine Sitzung mit session_start() initiiert wird, erhält sie eine exklusive Schreibsperre für die Sitzungsdatei. Folglich werden alle anderen Anfragen, die versuchen, auf die Sitzungsdatei zuzugreifen, blockiert, bis die Sperre aufgehoben wird.
Lösung: Dateibasierte Sitzungen deaktivieren
Eine Lösung besteht darin, sie zu deaktivieren Dateibasierte Sitzungsspeicherung durch Ändern der php.ini-Konfigurationsdatei:
session.save_handler = redis session.save_path = tcp://localhost:6379
Diese Änderung leitet Sitzungsdaten an einen Redis-Server um und beseitigt so das Problem der Dateisperre.
Alternativ: Schreibzugriff auf Sitzungsdatei schließen
Alternativ können Sie die Schreibsperre für Sitzungsdateien aufheben, indem Sie die Sitzungsdatei nach dem Schreiben von Daten explizit schließen:
<?php session_start(); $_SESSION['foo'] = 'bar'; // Write data to the session session_write_close(); // Release the file write lock
Mit dieser Technik können die Sitzungsdaten gelöscht werden später lesen, verhindert aber, dass andere Anfragen durch die Sitzungsschreibsperre blockiert werden.
Das obige ist der detaillierte Inhalt vonHier sind einige Titeloptionen, die mit dem Frageformat spielen: * Warum werden meine AJAX-Anfragen in PHP nicht gleichzeitig ausgeführt? (Konzentriert sich auf das Problem) * So erreichen Sie echte Parallelität mit AJAX-Anforderungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!