2

最近、WindowsのアップグレードとCFサーバーの再起動後にColdFusionのスケジュールされたタスクが再開されないという問題が発生しました。スケジュールされたタスクの状態を監視し、それらが適切に実行されていない場合にアラートを受け取る方法はありますか?または、その情報のログファイルを解析するタスクを作成する必要がありますか?

4

3 に答える 3

5

admin apiを使用して、スケジュールされたタスクに関する情報を取得できます。以下は、スケジュールされた各タスクに関する情報を含む構造体の配列を返します。次に、配列をループして、last_run変数を確認できます。

<cfset arySchedTasks = createobject("java","coldfusion.server.ServiceFactory").getCronService().listall() />
于 2010-10-19T19:03:28.507 に答える
0

スケジュールされたタスクが最も一般的なレベルで機能していることを確認する場合、1つの方法は、必要な頻度で実行される「ハートビート」タスクをスケジュールすることです。カウンターの更新、タイムスタンプの変更、電子メールの送信、毎朝の「I'm alive」SMSのトリガー、ログエントリの追加など、意味のあるタスクを設定します。これにより、すべてのタスクが実行されていることはわかりませんが、サーバーが稼働していて、スケジュールされたタスクシステム自体が機能していることがわかります。

もう1つのオプションは、タスクのフロントコントローラーの一種である単一のエントリポイントを介してタスクを集中させることです。これにより、個々のタスクのセットアップと構成がCFAdministratorではなくコードに委任されます。マスタータスクコントローラーには、各タスクのトリガーコードが含まれます。コントローラを必要な頻度で実行するようにスケジュールします。つまり、多数ではなく1つのタスクを実行します。コントローラでは、おそらく5分ごとに次のようになります。

Check the time/date, compare against set of tasks
If time (or frequency) is A, run tasks P,Q,R, log success/failure
If time is B, run tasks S,T, log success/failure
If time is C, run tasks U,V,X, log success/failure    
Send heartbeat with success/failure codes for all relevant tasks

このアプローチの利点の1つは、より豊富な合否ワークフローを表現できることです。タスクを半ランダム化された頻度で実行したり、他のタスクの成功または失敗に基づいてタスクを実行したりできます。ハートビートを表示/受信した場合インジケーター、タスクコントローラーが実際に実行されたことを知っています。

于 2010-10-19T19:21:16.530 に答える
0

別の簡単なオプション。各タスクの出力ファイルを有効にし、独立したcronジョブでこれらのファイルを確認します。必要な期間内にファイルが変更された場合は、スケジューラタスクが実行されたことを意味します。

于 2010-10-20T12:13:42.017 に答える