问题 计划任务是否以与网页相同的方式加载Application.cfc?


计划任务是否以与网页相同的方式加载Application.cfc?我们有一个每晚运行的任务,需要使用加载到应用程序中的服务cfc。应用程序范围是否与调用标准网页时的方式相同?是否有任何差异或缺陷值得注意?


2753
2018-03-03 15:59


起源



答案:


CF任务调度程序对您在任务中指定的URL进行HTTP调用,因此适用所有标准规则。运行Application.cfm / application.cfc,应用程序范围存在,等等。

您需要记住的唯一事情就是调度程序本身无法识别错误,因此您应该以错误记录,发送电子邮件等方式编写任务。并且,在测试期间,可能取决于成功。

编辑: Sergii注意到我忽略了一些东西。调度程序不维护cookie。它的行为更像蜘蛛。因此,会话或客户端作用域中或写入cookie的任何内容都不会实际存储,并且在下次运行操作时将丢失。


14
2018-03-03 17:08



唯一的区别是每个请求都创建了新的会话。 - Sergii
这很有趣,我使用在计划任务中从Application.cfc设置的应用程序范围变量得到了不一致的结果。基于此,我将重新研究那些我之前解决过的问题。 - Jay
我也看到了古怪,这就是为什么我倾向于使我的预定任务自成一体。我认为有些方法在无头浏览器请求时不会触发,如OnSessionStart()或OnRequestStart()。 - ale
我从未遇到应用程序范围问题,但(我认为)我只使用application.cfm进行计划任务。 - Ben Doom


答案:


CF任务调度程序对您在任务中指定的URL进行HTTP调用,因此适用所有标准规则。运行Application.cfm / application.cfc,应用程序范围存在,等等。

您需要记住的唯一事情就是调度程序本身无法识别错误,因此您应该以错误记录,发送电子邮件等方式编写任务。并且,在测试期间,可能取决于成功。

编辑: Sergii注意到我忽略了一些东西。调度程序不维护cookie。它的行为更像蜘蛛。因此,会话或客户端作用域中或写入cookie的任何内容都不会实际存储,并且在下次运行操作时将丢失。


14
2018-03-03 17:08



唯一的区别是每个请求都创建了新的会话。 - Sergii
这很有趣,我使用在计划任务中从Application.cfc设置的应用程序范围变量得到了不一致的结果。基于此,我将重新研究那些我之前解决过的问题。 - Jay
我也看到了古怪,这就是为什么我倾向于使我的预定任务自成一体。我认为有些方法在无头浏览器请求时不会触发,如OnSessionStart()或OnRequestStart()。 - ale
我从未遇到应用程序范围问题,但(我认为)我只使用application.cfm进行计划任务。 - Ben Doom