如何在ColdFusion中获取计划任务列表和上次运行结果?

时间:2010-02-23 17:44:21

标签: coldfusion scheduled-tasks coldfusion-8 coldfusion-9 cfadmin

我们正在尝试为我们的cron作业构建一个仪表板---- CF,Java,SQLServer等,以便我们可以看到最后运行的内容,结果是什么,以及它们何时被安排到跑下一步。

有没有办法使用CFAdmin API或一些未记录的<cfschedule>技巧来获取列表:

  1. 安排了哪些任务?
  2. 最后一次运行时间是什么?
  3. 成功了吗?
  4. 什么时候安排再次运行?
  5. 我们目前正在使用CF8,但将在几周内升级到CF9。

3 个答案:

答案 0 :(得分: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请求。

希望这有帮助。

答案 1 :(得分: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">

然后,如果需要,您可以根据数据库验证日志。由于它是来自页面的响应,因此您也可以在此处获取并存储错误和警告。

答案 2 :(得分:0)

@eric kolb是对的 - 这是以编程方式进行的方式。如果您想要更好地控制列表的反应方式,请尝试以下代码(基本相同,但在cfscript中):

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

另外,回答#2和#3(如果你做的话,这只是一个由两部分组成的问题): 当任务运行时,给自己发一封电子邮件,在顶部说“嘿!我跑了!!!!”然后又说“嘿!我做完了!”在任务代码的底部 - 你可以添加一个时间戳来告诉它何时开始和停止(在数据库中记录它也可以)。另外,要知道它将在下一次运行,只需查看最后一次和“间隔”字段从ServiceFactory调用的结果中返回。 (如果您需要进一步解释我的意思,请随时提出。

希望如果您还没有找到您需要的东西

,这会有所帮助