ホームページ >バックエンド開発 >PHPチュートリアル >AJAX リクエストが相互にブロックされるのはなぜですか?それを修正するにはどうすればよいですか?
AJAX リクエストでのリクエストの並列化
特定のシナリオでは、AJAX リクエストを同時に実行すると、ユーザー エクスペリエンスを向上させたり、パフォーマンスを最適化したりするのに有利な場合があります。ただし、特定の状況では、これらのリクエストが誤って互いの実行を妨害する可能性があります。
2 つの AJAX リクエストを同時に実行しようとすると、一般的なジレンマが発生します。この問題は通常、2 番目のリクエストが独立して実行されるはずであるにもかかわらず、最初のリクエストが完了するまで遅延するという形で現れます。これは、特に以前は機能していた場合には、不可解でイライラする可能性があります。
この動作の根本的な原因は、多くの場合、セッションのブロックにあります。デフォルトでは、PHP はセッション データをファイルに保存します。 session_start() でセッションが初期化されると、ファイルは書き込み用に開かれ、同時変更を防ぐためにロックされます。このロック メカニズムはデータの整合性を保証しますが、誤って同時セッションのボトルネックを作成してしまいます。
この問題を解決して AJAX リクエストを並行して実行できるようにするには、PHP のセッション設定を変更してファイルの使用を避けるか、セッション書き込みを明示的に閉じることができます。 。後者のオプションは、次のコード スニペットに示されています:
<code class="php"><?php session_start(); // starting the session $_SESSION['foo'] = 'bar'; // Write data to the session if you want to session_write_close(); // close the session file and release the lock echo $_SESSION['foo']; // You can still read from the session.</code>
この変更を実装するとセッション ロックが解放され、同時 AJAX リクエストが干渉なしで続行できるようになります。
以上がAJAX リクエストが相互にブロックされるのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。