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);
答案 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或其他东西来识别触发源。