ホームページ  >  記事  >  バックエンド開発  >  同時 AJAX リクエストが並行して実行されないのはなぜですか?

同時 AJAX リクエストが並行して実行されないのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-29 19:25:02622ブラウズ

Why Are My Simultaneous AJAX Requests Not Running in Parallel?

同時 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。