【问题标题】:Does a CF template continue to run even if the browser is closed?即使关闭浏览器,CF 模板是否会继续运行?
【发布时间】:2016-05-08 15:22:10
【问题描述】:

抱歉,如果这是一个明显的新手问题,但我突然不确定答案。

我正在运行几个大型任务,这些任务通过 <cfloop> 的数据库记录运行。运行可能需要几个小时。

如果 CF 模板被“执行”(基本上是在浏览器中访问其 .cfm 页面 - 不是通过计划任务访问),但浏览器在周期中关闭,模板是否会继续在服务器上运行,直到它完全的?还是在窗口关闭时中止/退出模板?

【问题讨论】:

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

标签: coldfusion


【解决方案1】:

是的,它将继续运行。当您的浏览器发出请求时,它正在向 Web 服务器(IIS、Apache 等)请求 CF 页面,然后 Web 服务器正在向 CF 引擎询问,CF 引擎开始处理模板。完成处理后,CF 引擎会将响应发送到 Web 服务器,然后再将其发送到您的浏览器。从中可以看出CF引擎并不知道你关闭了浏览器。

【讨论】:

    猜你喜欢
    • 2016-05-20
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多