如何在ColdFusion中获取计划任务和上次运行结果的列表?
我们正试图为我们的cron作业——CF、Java、SQLServer等构建一个仪表板,这样我们就可以看到最后一次运行的时间、结果以及下一次运行的计划时间 CFAdmin API或一些未记录的如何在ColdFusion中获取计划任务和上次运行结果的列表?,coldfusion,scheduled-tasks,coldfusion-8,coldfusion-9,cfadmin,Coldfusion,Scheduled Tasks,Coldfusion 8,Coldfusion 9,Cfadmin,我们正试图为我们的cron作业——CF、Java、SQLServer等构建一个仪表板,这样我们就可以看到最后一次运行的时间、结果以及下一次运行的计划时间 CFAdmin API或一些未记录的技巧是否有办法获得以下列表: 计划了哪些任务 上次运行时间是多少 它成功了吗 计划何时再次运行 我们目前使用的是CF8,但将在几周内升级到CF9。我为您做了一些研究。我发现一个稍旧的引用仍然有效,至少在CF8中是如此,而且可能在CF9中也是如此 <cfobject type="JAVA" action=
技巧是否有办法获得以下列表:
我们目前使用的是CF8,但将在几周内升级到CF9。我为您做了一些研究。我发现一个稍旧的引用仍然有效,至少在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>
从
这回答了您的问题1和4。
至于#3,这是没有答案的。ColdFusion的计划任务引擎只是在规定的时间加载指定的URL。没有成功或失败——它只是执行一个HTTP请求
希望这有帮助。可以“发布”作业结果。来自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">
然后,如果需要,可以根据数据库验证日志。由于这是来自页面的响应,因此您也可以在此处获取并存储错误和警告。@eric kolb是对的-这是通过编程实现的方法。如果您想要更多地控制列表的反应方式,请尝试以下代码(基本相同,但使用cfscript):
ScheduledTaskArray=ArrayNew(1);
taskService=createobject('java','coldfusion.server.ServiceFactory').getCronService();
ScheduledTaskArray=taskservice.listall();
另外,要回答#2和#3(如果你做对了,这几乎只是一个由两部分组成的问题):
当任务运行时,在顶部给自己发送一封电子邮件,说“嘿!我正在运行!!!”,然后在任务代码的底部再发送一封邮件,说“嘿!我完成了!!!”——您还可以添加一个时间戳,告诉它何时开始和停止(将此记录到数据库中也可以)。另外,要知道它下一步何时运行,只需查看上次运行的时间和从ServiceFactory调用结果返回的“interval”字段。(如果您需要进一步解释我的意思,请随时询问
如果你还没有弄明白你需要做什么,希望这对你有所帮助。这是一个很好的问题。我很想得到同样的信息。你的仪表板有没有可能最终出现在Riafforge上?听起来很不错,+1。我会选择
,不过,我觉得这更容易阅读。太棒了。这正是我想要完成的。我想我会创造一个数据库中可以保存这些作业的运行/失败状态的表。当它启动时,将其设置为“运行”,当它完成时,将其设置为“成功”,Railo 3+和CF10+提供一个列表操作:
@modius它实际上是
,模式是可选的,默认为服务器
<cfscript>
scheduledTasksArray=ArrayNew(1);
taskService=createobject('java','coldfusion.server.ServiceFactory').getCronService();
scheduledTasksArray=taskservice.listall();