【问题标题】:Coldfusion 10 SchedulerColdfusion 10 调度程序
【发布时间】:2013-08-08 09:36:30
【问题描述】:

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

  • 我有一个计划任务,比如 Task1。 Task1 应该连续执行,没有任何时间延迟或重叠。即

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

请指教。

【问题讨论】:

  • 你试过什么?如果你有,并且卡住了:你在哪里卡住了(相应地更新问题)你开始阅读文档了吗:help.adobe.com/en_US/ColdFusion/10.0/Developing/…
  • 如果我们知道这个人已经做了什么,我们会节省很多时间。如果答案是“什么都没有”,那么我就会知道要像他们自己所做的那样努力帮助他们。希望我们能在这里得到更多的细节......
  • 我会尝试使用类似于消息队列的东西。您可以设置任务 1 以触发每个 x 并使用队列保持连续性。

标签: coldfusion scheduled-tasks coldfusion-10


【解决方案1】:

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

您可以通过以下方式进行设置。

  1. 将任务 A 设置为运行一次。
  2. 将任务 B 设置为链式任务。
  3. 将任务 A 配置为在通过 on complete 事件完成时调用任务 B。
  4. 在任务 B 的代码中让它运行任务 A。

这应该会创建一个无限循环。但请注意,这可能会导致一些不良行为。您将不得不自我管理错误和失火。此外,如果链循环被中断,您将不得不重新启动它。

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

【讨论】:

    【解决方案2】:

    这是一个可以遵循的策略:

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

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

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

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

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

    我将类似的东西用于发送定制时事通讯的排队系统。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-23
      • 1970-01-01
      • 2018-06-23
      • 1970-01-01
      相关资源
      最近更新 更多