以下に、質問形式を使ったタイトルのオプションをいくつか示します。 * AJAX リクエストが PHP で同時に実行されないのはなぜですか? (問題に焦点を当てます) * AJAX リクエストで真の同時実行性を実現する方法

Barbara Streisand
リリース: 2024-10-28 02:17:02
オリジナル
668 人が閲覧しました

Here are a few title options, playing with the question format:

* Why Are My AJAX Requests Not Running Concurrently in PHP? (Focuses on the problem)
* How to Achieve True Concurrency with AJAX Requests in a PHP App? (Focuses on the solution)
* Session Bl

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!