2つのajaxプロセスを実行しているAJAX(prototype / php)は、最初のプロセスが終了するまでハングします

StackOverflow https://stackoverflow.com/questions/805354

質問

この質問は、以前の質問へのフォローアップです:前の質問

だから、ページをセットアップしてajax呼び出しを開始し、いくつかのレコードの処理を開始します。また、各レコードの後、別のテーブルの行を更新して、このプロセスのステータスを追跡します。最初のajax呼び出しが行われた後、別のスタートアップがあります。これはAjax.PeriodicalUpdaterであり、データベース内のその行を照会し、元のプロセスのステータスを返すだけのファイルをヒットするように設定されています。

つまり、ステータス更新を提供するファイルが現在のアプリの外部にある限り、これは完全に機能します。ファイルをアプリ内に配置すると、正しく機能しません。 firebugを見ると、PeriodicalUpdater呼び出しは元のajax呼び出しが終了するまで何も返しません。ファイルがハングして何も返さないかのようにハングアップするだけです。

このアプリ全体は、使用している基本的なフレームワーク内で実行されています。クレイジーなものはなく、ルーティング、基本的なテンプレートの側面などを処理するだけです。したがって、これらの関数/ファイルはすべてこのアプリ内にあり、これらすべてのAjax呼び出しはこれを介してルーティングされます。

このようなことの原因は何ですか?

役に立ちましたか?

解決

これは、ブラウザでサポートされている同時接続の制限によるものですか?特定のドメイン?

他のヒント

これは、PHPセッションのシリアル化が原因です。セッションデータは、各リクエストのPHPプロセスが書き込みを完了するまでロックされるため、同じセッション内の以降のリクエストはロックが解除されるまでキューに入れられます。

AJAXリクエストがセッション状態へのアクセスを必要とする場合、必要な情報を読み取り、コードのできるだけ早い段階で session_write_close()を使用してロックを解除します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top