これは非常に漠然とした質問かもしれませんが、スケジュールされたタスクはどの程度信頼できますか?たとえば、毎日午後3時に何かを実行するタスクを設定し、コードにエラーがないと仮定した場合、ColdFusionは常に毎日午後3時に実行されるようにしますか?
5 に答える
スケジュールどおりで、COLDFUSIONサーバーが実行されている場合は、午後3時ごとに実行されます(非常に重要です;))。よく使います。私のプロジェクトの1つで、日次レポートと電子メール統計を生成するためのほぼ25のスケジュール。スケジュールページでは、エラー時に電子メールをログに記録/送信している場合、ColdFusion onErrorメソッドによってこのエラーがキャッチされないため、ページがタイムアウトしないことを確認してください。スクリプトが正しく実行されなかったことを知ることはできません。
以前はスケジュールされたタスクを使用して、毎週、毎日、毎時、毎分、毎秒実行していました。ColdFusion 9.0.1 まではファイルをハックする必要がありましたがneo-cron.xml
、全体的に非常にうまく機能していました (こちらを参照) 。その後、1 分間に 1 回以上実行されるタスクを別のスケジューラに移動する必要がありました。
私たちはVisualCronに決定し、振り返っていません。CF スケジューリングとは異なり、VisualCron を使用すると、場合によっては不要な URL にアクセスするだけでなく、コマンド ライン タスクを実行できます。
CF10 では、スケジュールされたタスク エンジンに大きな変更が加えられているようです。しかし、間隔が 1 分を超えるタスクの場合、現在の CF スケジューリング エンジンは非常に信頼できます。
それが役立つことを願っています!
私の経験から、彼らは非常に信頼できます。毎日および毎週実行される多くの自動化されたタスクにそれらを使用します。私たちをがっかりさせたことはありません。
チェックとして、プログラムに電子メールを追加します。これにより、毎日の電子メールを受信した場合に、スケジュールされたタスクが実行されたことがわかります。何かがうまくいかなかった場合でも、WebサーバーまたはColdFusionが停止しない限り、すべてのセットアップが完了すると、スムーズに航行できるはずです。
CFは、スケジュールタスクを設定すると、エラーが発生しても常に実行されます。つまり、次のスケジュールタスクは、前のタスクがエラーをキャッチしたときのインターバル時間として実行されます。
私の経験から、それらは非常に信頼できます。
タスクが実行されたかどうかを確認する方法:
Railoサーバーの場合、タスクが実行されたかどうかを確認したり、タスクのステータスを把握したりする1つの方法は、「scheduler.log」を確認することです。これは通常、/ WEB-INF / railo/logsディレクトリにあります。ここでは、タスクが実行されたかどうか、タイムアウトしたかどうかなどを確認できます。
CFサーバーの場合、以下に示すようにオブジェクトを作成して、スケジュールされたタスクの配列を設定し、ループスルーまたはcfdumpすることができます。
<cfset arySchedTasks = createobject("java","coldfusion.server.ServiceFactory").getCronService().listall() />