Coldfusion 10 Scheduler

时间:2013-08-08 09:36:30

标签: coldfusion scheduled-tasks coldfusion-10

我想使用Coldfusion 10 Scheduler实现以下目标。

  • 我有一个预定的任务说Task1。 Task1应该连续执行,没有任何时间延迟或重叠。即

如果Task1需要10分钟,那么它应该在第11分钟再次触发。 如果下一次运行需要20分钟,那么它应该仅在第21分钟触发。

请建议。

2 个答案:

答案 0 :(得分:2)

这是可能的,但不是直接的。计划任务可以在“链”中运行另一个任务,但被链接的任务必须是“链”类型的任务。但是,您可以通过代码运行另一个任务。

以下是设置方法。

  1. 设置任务A以运行一次。
  2. 将任务B设置为链式任务。
  3. 配置任务A,通过on complete事件完成后调用任务B.
  4. 在任务B的代码中,它运行任务A.
  5. 这应该创建一个无限循环。但要注意,这可能会导致一些不必要的行为。您将不得不自我管理错误和失火。此外,如果链循环中断,您将不得不重新启动它。

    您可以设置一个观察程序任务,以确保链正在运行。如果它似乎失败了你可以调用任务B来启动链。

答案 1 :(得分:1)

这是一个遵循的策略:

1)创建一个包含字段的表,以跟踪脚本是否正在使用中。示例表:ScheduleStatus,field:intInUse

2)创建脚本。让脚本的第一行检查字段intInUse是否为null。如果是,则将其设置为1并运行脚本的其余部分。如果该字段不为null,则跳至cfabort。

3)完成脚本后,再次将数据库字段标记为NULL。

4)将计划任务设置为每分钟运行一次。它将每分钟执行一次,如果脚本正在使用,它将会中止。

通过循环等可能有其他方法可以做到这一点....但这可能是最简单的。

我在发送自定义简报的排队系统中使用类似的东西。