Ajaxを利用し、ブラウザの1クリックで1度に複数(4つ以上)のリクエストをサーバに投げるような仕組みがあるのですが、

IE6.0の場合、同時に開くセッション数の上限が4つであるため1度に複数のリクエストを投げても、
4つのリクエストしか最初の段階ではサーバに受け付けられないようです。
その後4つの内のどれかが返答があると、残りのリクエストがまたサーバに受け付けられる、という動きをし1度にリクエストを投げたつもりでもタイムラグが出てしまいます。

これを回避する方法は、IEの同時接続セッション数の上限を変更する、という方法以外に無いでしょうか。
出来ればサーバ側で解消する方法か、Ajaxを実行しているプログラムの書き方で解消したいのですが。

ちなみにFirefox2.0では上記の問題は起きないようです。

サーバは、Apache2.0 + PHP4系です。

回答の条件
  • 1人2回まで
  • 登録:2007/02/23 23:28:21
  • 終了:2007/03/02 23:30:02

回答(1件)

id:wate_wate No.1

ワテ回答回数45ベストアンサー獲得回数32007/02/25 01:25:55

ポイント60pt

サーバ側(?)という形になるとは思いますが、

PHPのPEARにHTTP_ClientまたはXML_RPCを利用して、

複数のリクエストを送れるとは思います。

概要としては、

1.リクエスト用スクリプトを呼び出し、

2.リクエスト用スクリプトで指定回数のリクエストを送信、

  また受け付けた結果を結合。

3.呼び出し元スクリプトにレスポンスをまとめて返す。

というような感じでしょうか。

id:kouayukou

ご回答ありがとうございます。

複数のクライアントからのリクエストを、サーバでHTTP_Clienを利用して並列処理して、返答があったものから順に(他の処理の完了をまたずに)クライアントに返す、というようにしたいのです。

そのためクライアントにAjaxの受け口となるSessoinをそれぞれのリクエスト毎に持ちたいな、と思ってるんですよ。

上記を踏まえてなにかよい方法があればお教えください。

2007/02/25 02:00:07
  • id:b-wind
    どうしても4つのリクエストを別々に投げなければいけないのか?
    という疑問はありますね。できれば1~2のリクエストにまとまれればいいんでしょうけど。

    同時コネクションの制限は同一サーバーの場合のみかかります。
    つまり多数の Web サーバーにリクエストを投げれば並列度は上がります。
    極端な話4つの Web サーバーにそれぞれリクエストを投げるような形にしてしまえばかなり並列度は上がりますね。
  • id:kouayukou
    どうしても4つ以上を別々に投げる必要がるのか、というのはごもっともだと思います。
    2つくらいにまとめる、という手が無いわけではないのですが出来る限り別々で投げて処理したいのです。

    > 同時コネクションの制限は同一サーバーの場合のみかかります。

    これは「同一ホスト」ということでしょうか?
    それともロードバランサなどの後ろに複数サーバがいれば別とみなされるのでしょうか?
    IEがどのように同時コネクションを判定しているのかが、わかっていないので。。
    もしよろしければお教えください。
  • id:pmakino
    そのホストの実体が単一か複数かなんてブラウザは知りようがないですから、あくまでホスト名が別なら、です。
    ちょうどそんな話題が取り上げられていた発表資料を見かけましたので参考として。
    Kazuho@Cybozu Labs: Comet の正しい使い方
    http://labs.cybozu.co.jp/blog/kazuho/archives/2007/02/keeping_comet_alive.php
  • id:kouayukou
    コメントありがとうございます。
    お教えいただいたドキュメント見ました。参考になりました。

    ブラウザはホスト名でチェックしているようですね。(notIPアドレス)
    同時接続数の制限への回避策としてはホスト名を増やしてIframeで通信する、というのが唯一の方法なのでしょうかね。
    Google Adenseの規約で同じサイトに複数のホスト名があるとまずいんですよね。。
    困りました。

この質問への反応(ブックマークコメント)

トラックバック

  • Ajax + IE6.0 の同時接続セッション数が上限4の問題 人力検索 はてな ピックアップ 質問集 2007-03-01 11:13:54
    Ajaxを利用し、ブラウザの1クリックで1度に複数(4つ以上)のリクエストをサーバに投げるような仕組みがあるのですが、 IE6.0の場合、同時に開くセッション数の上限が4つであるため1度に複数
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません