同時 AJAX リクエストの並列実行に失敗する
2 つの AJAX リクエスト (データを XLSX ファイルにエクスポートするリクエスト) が発生する問題が発生する可能性があります。もう 1 つは進行状況の更新を表示するためのもので、同時に実行することはできません。最初のリクエストは時間がかかり、進行状況の更新の表示がブロックされているようです。
説明:
この動作はセッションのブロックに起因する可能性があります。 PHP はデフォルトでセッション データをファイルに保存します。 session_start() でセッションが開始されると、セッション ファイルは書き込み用に開かれ、同時変更を防ぐためにロックされます。その結果、後続のセッションが有効な PHP リクエストは、前のリクエストがロックを解放するまで待ってから続行する必要があります。
解決策:
この問題を解決するには、次の手順を実行します。代替セッション保存方法 (データベース、memcached など) を使用するように PHP を設定するか、データを書き込んだ後にセッション書き込みを明示的に閉じることができます。後者のアプローチは、session_write_close() 関数を使用して実現できます。以下に例を示します。
<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>
セッション書き込みを閉じると、セッション ファイルのロックが解除され、最初のリクエストが完了するのを待たずに後続の AJAX リクエストを続行できるようになります。
以上が同時 AJAX リクエストが並行して実行されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。