Coldfusion:检测是否由调度程序运行

时间:2011-07-22 13:39:26

标签: coldfusion

ColdFusion应用程序是否有办法知道它是从调度程序运行还是从浏览器运行?理想情况下,我想在Application.cfm中设置一个Session标志,例如“isScheduled”,以便在整个应用程序中使用。

修改 的 我最终检查了用户代理,并且它正在本地运行(以提高安全性),并且(因为它在Application.cfm中运行)该页面位于允许调度的文件夹中:

Request.isScheduled = FindNoCase("CFSCHEDULE",CGI.HTTP_USER_AGENT) and (Find("10.",CGI.REMOTE_ADDR)==1 or Find("198.162.",CGI.REMOTE_ADDR)==1) and FindNoCase("scheduled",CGI.CF_TEMPLATE_PATH);

4 个答案:

答案 0 :(得分:4)

检查用户代理。用户代理是“CFSCHEDULE”,但请先确认。

答案 1 :(得分:1)

我将Application.cfm逻辑嵌套在cfif中,检查是否定义了参数('cron')。如果是,那么它会跳过应用程序中的所有其余逻辑,如身份验证,标题垃圾等。

然后,当我设置计划任务时,我会使用cron参数(http://mysite.com/scheduledtasks.cfm?cron=yo)传入我想要的URL

答案 2 :(得分:0)

我不确定但是如果应用程序通过调度程序运行,则cgi.remote_address对于您可以跟踪的所有请求必须相同.....并标记“isSchedule”....

答案 3 :(得分:0)

通常的做法是让任务调度程序运行一个任务列表,然后触发实际任务。即你运行了“dailytask.cfm,其中包括你想要运行的任务。你现在可以添加url.parameters或其他东西来识别触发源。