最近,我们遇到了一个问题,在Windows升级和CF服务器重新启动后,ColdFusion计划的任务没有恢复。是否有一种方法可以监视计划任务的健康状况,如果他们无法正常运行,请提醒他们?还是我需要编写一个任务来解析该信息的日志文件?

有帮助吗?

解决方案

您可以使用Admin API获取有关计划任务的信息。以下返回一系列结构,其中包含有关每个计划任务的信息。然后,您可以循环浏览数组,并查看last_run变量。

<cfset arySchedTasks = createobject("java","coldfusion.server.ServiceFactory").getCronService().listall() />

其他提示

如果您想检查计划的任务是否在最通用的级别上工作,则一种方法是安排“心跳”任务,按照您的意愿进行运行。设置更新计数器,更改时间戳,发送电子邮件,每天早上触发“我活着”的任务,每天早上添加日志条目 - 无论有意义。这不会告诉您您的所有任务都在运行,但是它会告诉您服务器还活着,并且计划的任务系统本身正在工作。

另一个选择是通过单个入口汇入任务 - 一种用于任务的前控制器。这将单个任务的设置和配置委托给您的代码,而不是CF管理员。您的主任务控制器将包括为每个任务触发代码。安排控制器以尽可能频繁地运行 - 因此,一个任务,而不是许多任务。在控制器中,类似的事情,也许每五分钟:

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

这种方法的一个优点是,您可以表达更丰富的行驶/不进行工作流 - 在半随机频率下运行任务,基于其他任务的成功或失败等执行任务等。如果您看到/接收心跳指示器,您知道您的任务控制器实际上确实运行。

另一个简单的选择。启用每个任务的输出文件,并通过独立的cron作业检查这些文件:如果在所需的时间跨度内更改文件应意味着执行调度程序任务。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top