AJAX リクエストが同時に実行されない
パフォーマンスを最適化するために、Web アプリケーションで 2 つの同時 AJAX リクエストが使用され、進行状況が追跡されます。長い仕事の。ただし、2 番目のリクエストは最初のリクエストが完了するまで停止します。
根本原因: セッションのブロック
PHP は、デフォルトでセッション ストレージにファイルベースのアプローチを採用します。 session_start() でセッションが開始されると、セッション ファイルに対する排他的書き込みロックが取得されます。その結果、セッション ファイルにアクセスしようとする他のすべてのリクエストは、ロックが解放されるまでブロックされます。
解決策: ファイルベースのセッションを無効にする
解決策の 1 つは、ファイルベースのセッションを無効にすることです。 php.ini 設定ファイルを変更して、ファイルベースのセッション ストレージを作成します。
session.save_handler = redis session.save_path = tcp://localhost:6379
この変更により、セッション データが Redis サーバーにリダイレクトされ、ファイル ロックの問題が解消されます。
または:セッション ファイルの書き込みを閉じる
または、データの書き込み後にセッション ファイルを明示的に閉じることで、セッション ファイルの書き込みロックを解放できます。
<?php session_start(); $_SESSION['foo'] = 'bar'; // Write data to the session session_write_close(); // Release the file write lock
この手法により、セッション データを後で読み取りますが、他のリクエストがセッション書き込みロックによってブロックされるのを防ぎます。
以上が以下に、質問形式を使ったタイトルのオプションをいくつか示します。 * AJAX リクエストが PHP で同時に実行されないのはなぜですか? (問題に焦点を当てます) * AJAX リクエストで真の同時実行性を実現する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。