19

CF、Java、SQLServer などの cron ジョブのダッシュボードを構築しようとしています。これにより、最後にいつ実行されたのか、結果はどうなったのか、次にいつ実行される予定なのかを確認できます。

CFAdmin API または文書化されていない<cfschedule>トリックを使用して、次のリストを取得する方法はありますか。

  1. どのようなタスクがスケジュールされていますか?
  2. 前回の実行時間は?
  3. 成功しましたか?
  4. 再放送予定はいつですか?

現在 CF8 を使用していますが、数週間以内に CF9 にアップグレードする予定です。

4

3 に答える 3

28

私はあなたのためにこれについて少し調査しました。少なくともCF8で、おそらくCF9でも有効な、やや古いリファレンスを見つけました。

<cfobject type="JAVA" action="Create" name="factory" class="coldfusion.server.ServiceFactory">
<cfset allTasks = factory.CronService.listAll()/>
<cfloop index="i" from="1" to="#ArrayLen(allTasks)#">
    <cfdump var="#allTasks[i]#" />
</cfloop>

http://www.bpurcell.org/blog/index.cfm?mode=entry&ENTRY=935より

これで質問 1 と 4 に答えます。#3に関しては、それに対する答えはありません。ColdFusion のスケジュールされたタスク エンジンは、指定された時間に指定された URL をロードしているだけです。成功も失敗もありません。HTTP リクエストを実行するだけです。

お役に立てれば。

于 2010-02-23T18:48:12.350 に答える
1

@erickolbは正しいです-それはプログラムでそれを行う方法です。リストの反応をより細かく制御したい場合は、次のコードを試してください(基本的に同じですが、cfscriptで)。

<cfscript>
scheduledTasksArray=ArrayNew(1);
taskService=createobject('java','coldfusion.server.ServiceFactory').getCronService();
scheduledTasksArray=taskservice.listall();

また、#2と#3に答えるには(正しく実行すれば、2部構成の質問の1つにすぎません):タスクが実行されたら、上部に「HEY!I'm RUNNING!」というメールを送信します。 !!!」そして別の人が「HEY!I'MDONE!!!」と言った。タスクのコードの下部に-タイムスタンプを追加して、いつ開始および停止したかを通知することもできます(これをデータベースに記録することもできます)。また、次にいつ実行されるかを知るには、前回とServiceFactory呼び出しの結果から取得された「interval」フィールドを確認してください。(これが何を意味するのかについてさらに説明が必要な場合は、お気軽にお問い合わせください。

必要なものがまだわからない場合は、これがお役に立てば幸いです。

于 2012-07-17T20:48:25.493 に答える
1

ジョブの結果を「公開」することができます。HTTP 要求からの応答をファイル サーバーに書き込むことができ、それには最後に実行されたジョブの値が含まれます。

<cfschedule action = "update"
    task = "TaskName" 
    operation = "HTTPRequest"
    url = "/index.cfm?action=task"
    startDate = "#STARTDATE#"
    startTime = "12:00:00 AM"
    interval = "Daily"
    resolveURL = "NO"
    requestTimeOut = "600"
    publish = "yes"
    path = "#PATH#"
    file = "log_file.log">

次に、必要に応じて、データベースに対してログを確認できます。ページからの応答なので、ここでもエラーや警告を取得して保存できます。

于 2012-05-21T21:44:31.130 に答える