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