0

いくつかの異なるWebサイトからの要求を処理するバックエンドサーバーがあります。つまり、多くのWebサイトが、ユーザーのブラウザーに表示する情報をサーバーに要求します。

これらのWebサイトには、私が制御できない独自のコードとサーバーがあります。バックエンドコードを変更する必要があります。これにより、サーバーにデータを返し、クライアントのWebブラウザーに表示するのに最大5分の遅延が発生します。

すべてのクライアントのWebサイトを変更することはできないので、バックエンドサーバーがクライアントのブラウザーを強制的に待機させ、ブラウザーで[送信]を押した後にタイムアウトしないようにする方法はありますか?

クライアントサーバーに戻ることができるものはありますか?クライアントブラウザに渡して、データの処理で忙しいためにWebサイトから応答がない場合でも、待機し続けて諦めないようにすることができますか?

現在、私はphpを使用していますが、問題を解決する任意の言語を使用できます。

私は絶望的です!

ラフありがとう!

4

3 に答える 3

1

ほとんどのブラウザは、サーバーへの接続が成功し、リクエストがサーバーに到達した場合、サーバーがリクエストに応答するのを無期限に(または少なくとも非常に長い時間)待機します。

ただし、このルートはお勧めしません。ブラウザは待機しますが、ユーザーは待機しない可能性があります。データベースなどでジョブのステータスを更新して、バックグラウンドで作業を行うことをお勧めします。クライアント側では、AJAXを介して定期的に更新をポーリングし、ジョブが完了したときに必要に応じてユーザーをリダイレクトできます。

于 2012-05-09T15:08:55.043 に答える
1

最善の対策は、サーバーがphpの実行をタイムアウトさせないようにすることです。また、phpスクリプトに許可される実行時間を設定し、httpデーモンに適用可能な他のすべてのタイムアウト設定とphpタイムアウト設定を設定してください。

クライアントのタイムアウトに関しては、ここでできることはあまりありません。クライアントは、十分な時間があり、切断するタイミングを決定します。可能であれば、出力が通常クライアントを介してタイムアウトしない限り、最終結果までの途中で何かを出力することができます。これは、最終的な計算の準備ができるまでの期間を出力することを意味する場合があります。

あなたが本当にクライアントコードを制御できない場合、あなたができる最善のことはあなたの側をより速くすることを試みることです。可能であればデータをキャッシュし、結果を事前計算するなど

于 2012-05-09T15:10:28.897 に答える
0

時間のかかるプロセスをバックグラウンドにフォークします。(部分的な) 出力データをセッション ストアに伝達します。メイン ページを定期的にそれ自体にリダイレクトし、セッション ストアからコンテンツを読み取ります。

完全なプログラムについては、CGI による長いプロセスの監視を参照してください。

于 2012-05-09T16:05:54.533 に答える