我想使用 Coldfusion 10 Scheduler 实现以下目标。
- 我有一个计划任务说 Task1。Task1 应该连续执行,没有任何时间延迟或重叠。IE
如果 Task1 需要 10 分钟,那么它应该在第 11 分钟再次触发。如果下一次运行需要 20 分钟,那么它应该只在第 21 分钟触发。
请指教。
我想使用 Coldfusion 10 Scheduler 实现以下目标。
如果 Task1 需要 10 分钟,那么它应该在第 11 分钟再次触发。如果下一次运行需要 20 分钟,那么它应该只在第 21 分钟触发。
请指教。
这是可能的,但不是直接的。计划任务可以在“链”中运行另一个任务,但被链接的任务必须是“链”类型的任务。但是,您可以让一个任务通过代码运行另一个任务。
这是您如何设置它的方法。
这应该创建一个无限循环。但请注意,这可能会导致一些不良行为。您将不得不自我管理错误和失火。此外,如果链循环被中断,您将不得不重新启动它。
您可以设置一个观察者任务来确保链正在运行。如果它似乎失败了,您可以调用任务 B 来启动链。
以下是要遵循的策略:
1) 创建一个带有字段的表,以跟踪脚本是否正在使用中。示例表:ScheduleStatus,字段:intInUse
2)创建你的脚本。让脚本的第一行检查 intInUse 字段是否为空。如果是,则将其设置为 1 并运行脚本的其余部分。如果该字段不为空,则跳至 cfabort。
3) 脚本完成后,再次将数据库字段标记为 NULL。
4) 将您的计划任务设置为每分钟运行一次。它将每分钟执行一次,如果脚本正在使用中,它将中止。
可能有其他方法可以做到这一点,通过循环等......但这可能是最简单的。
我将类似的东西用于发送定制时事通讯的排队系统。