2016-06-12 8 views
0

私は、フロントエンドサイトにあらかじめ生成されたデータのブロブを提供するRESTスタイルのバックエンドWebサービスを構築しています。ブロブ自体は大きくなく、単一のHTTPレスポンス/リクエストで容易に満足できます。バックエンドはPHPで書かれています。長期実行HTTPプロセスの正しい処理

すべてうまく動作します。難しいのは、ブロブの再生です。ブロブの数が多い場合は、かなり長くする必要があります。再生成は、(別々にホストされている)サーバー上の応答タイムアウトよりも長くかかる可能性があります。

私は次のように操作したいと思います: - 処理が開始され、応答なしですべてが(HTTP 200、すべて互角 - ドーリー)が完了しているか、私が到達するまで、 - 送られた最初の要求は 「すべての塊を再生成」であります内部タイムアウト - タイムリミットに達した場合、処理が不完全であることを示す応答を送信したいとします(処理が成功したため、どのHTTPステータスが適切ですか? )、クライアントが継続を要求できるようにします。 「続行してください」要求があるべきであることを示すデータを返すと想像することができます(これはリンクヘッダーで最もよく行われますか?) - クライアントは次に継続を要求し、完全な成功が通知されるまでループを続けます。

HTTPクライアント/サーバー交換でこのようなことを通知する最も良い方法は何ですか。私は、クライアントループを処理するための短いJavascriptを書く準備ができています。

いいアイデアありがとう!

答えて

0

私はRangeヘッダーに関するかなりの研究を行い、 "bytes"ではない範囲単位を使用する効果について十分なコンセンサスがなかったという結論に達しました。 HTTPステータス200,206、および416が有用な意味を有するという事実にもかかわらず。良い要約については、http://otac0n.com/blog/2012/11/21/range-header-i-choose-you.htmlを参照してください。

私は、それぞれのレスポンスに結果が返ってきて、すでに処理されたブロブをスキップできるようにする「再開」値でクエリーを再実行するかどうかを通知しました。

Rangeのスタッフが「アイテム」をユニットとして許可しても大丈夫です。これにより、単純なコレクションがURIのオーバーロードを余儀なくされることなくヘッダパラメータを使って処理できるようになります。

+0

StackOverflowのブログ圏のhttp://stackoverflow.com/questions/1434647/using-the-http-range-header-with-a-range-specifier-other-than-bytesとfloowのリンクもご覧ください –

関連する問題