2009-08-26 11 views
1

httpリクエストが行われ、発信者がリクエストを放棄した場合は、とにかく完了しますか?たとえば、DBにバナーをクリックしてリダイレクトする非同期JavaScript GETリクエストです。スクリプトは応答を待つ必要がありますか?httpリクエストはいつも完了していますか?

答えて

1

あなたはそれが安全であるのを待つべきです。サーバがいつあなたのリクエストを処理するかについてはわかりませんが(通常は数百ミリ秒以内です)、タイムアウトしたか、失敗したか、またはあなたが待っていなければ期待どおりの反応がありません。

2

クライアントは、要求をキャンセルするという通知をサーバーに送信しません。

PHPは、クライアントに何らかのデータを送信しようとするまでクライアントが切断されたかどうかを知りません(例えば、バッファされていないecho()呼び出し)。そのため、スクリプトがユーザにデータを返さない場合、実行する。データが返されて途中で中断することがありますが、これはignore_user_abort()で変更できます) 別の環境を使用している場合は、ドキュメントを参照する必要があります。

2

ほとんどの場合、要求がサーバーによって受信されると、クライアントがリッスンを停止すると処理が停止しません。

ただし、要求を処理中にサーバーが常に失敗する可能性があるため、完了したと見なすことはおそらくお勧めできません。

3

あなたの要求はどれくらい重要ですか?その時点でデータベースが利用できない場合はどうなりますか?サーバー側のコードが例外をスローするとどうなりますか?

非常に重要な要求の場合、完全に処理できるようになるまで要求データを保持できる何らかの種類のメッセージキューイングを実装する必要があります。グリッドやクラウドを扱う場合、ノードがハードウェア障害を起こす可能性があるため、単一のノードにメッセージをキューイングするだけでは不十分です。しかし、これは極端なケースです。ここでは専用のキューサーバーがあります。

1

要求がサーバーに届くために応答を待つ必要はありません。サーバーは、リクエストを処理している間に誰かがまだリスニングしているかどうかを確認できますが、途中でエラーが発生していない限り、リクエストを処理するユーザーがいなくてもリクエストの処理が開始されます。

リクエストが実際に処理されたことを確認するには、レスポンスを待つ必要がありますが、リクエストがサーバーに送られる必要はありません。

関連する問題