回答:
「ベストプラクティス」については知りません。私は最も一般的な間違いを知っています。
最初の間違い:DOS Yourself
webhandlerを使用して、長時間実行されるジョブを処理します。これは、長時間実行されるジョブになるヒットの割合、実行時間、および維持されるトラフィックの量に応じて、悪い場合もあれば非常に悪い場合もあります。
長時間実行ジョブが完了するまでにかかる時間内に、長時間実行ジョブが1つを超えないようにする必要があります。自分でDOSを実行する場合。また、割合と時間が一貫していると仮定すると、トラフィックが増えると悪化します。これは、トラフィックの増加に制限を課す問題の1つです。
第二の間違い:ウェブハンドラーからのスポーン
長時間実行されているプロセスを処理するためにWebハンドラーからプロセスを生成するのは難しい場合があり、その結果、エラーが発生しやすくなります。
オプション
私は通常、at(1)
フォークせずにwebhandlerからきれいに分離するために使用します。
でポーリング実装を使用することもできcron
ます。
処理を処理する別のサーバープロセスと通信できます。その通信を用いて行うことができsockets
、pipes
またはRESTのHTTP呼び出しのような、より高いレベルの抽象化又はキューメッセージをルーティングします。
数分以上話していると思います。
数分であれば、バックグラウンドでワーカースレッドを起動し、UIに進行状況を表示できます。多くのWebアプリケーションがその方法を使用しています。
5分を超える場合は、タスクを専用サービスに委任することができます。1つの例は、Googleアナリティクスによって生成されたレポートです。
Microsoft Messagingキューを使用して、システムから別のシステム、またはコンポーネントから別のシステムに情報を送信できます。