【发布时间】:2016-05-08 15:22:10
【问题描述】:
抱歉,如果这是一个明显的新手问题,但我突然不确定答案。
我正在运行几个大型任务,这些任务通过 <cfloop> 的数据库记录运行。运行可能需要几个小时。
如果 CF 模板被“执行”(基本上是在浏览器中访问其 .cfm 页面 - 不是通过计划任务访问),但浏览器在周期中关闭,模板是否会继续在服务器上运行,直到它完全的?还是在窗口关闭时中止/退出模板?
【问题讨论】:
-
它将继续运行
-
是的。 stackoverflow.com/questions/1631486/…(忽略“刷新”部分)FWIW,您可以自己测试。使用循环模拟长时间运行的脚本。让它在每次迭代时记录到一个文件中,然后休眠 50 毫秒。在浏览器中加载脚本。然后在几秒后取消请求并查看日志。
-
运行可能需要几个小时。您应该重新考虑您的方法。首先,确定循环是否真的需要,通常不是。其次,如果是,则将工作拆分为 X 条记录的批次,并将其作为一次性计划任务运行。每次都有任务进程X记录。然后再次调用自身,直到没有更多记录需要处理。比循环需要更多的工作,但更健壮。
-
感谢@MattBusche 和 Leigh - 总是对我的问题非常有帮助和友善 :)
-
@volumeone - 欢迎。由于标题中的确切问题已经被问及并得到了回答,因此我投票决定将此问题作为重复项关闭。也就是说……您真正的问题似乎是如何处理一个大型的、可能需要长时间运行的进程。我很好奇当前流程中的循环。循环通常是处理大量数据最不理想的方法,并且通常可以(尽管不总是)重构为更快、更有效的基于集合的方法。可能想打开一个关于该特定问题的单独线程。
标签: coldfusion