Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Coldfusion:检测调度程序是否正在运行_Coldfusion - Fatal编程技术网

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

Coldfusion:检测调度程序是否正在运行,coldfusion,Coldfusion,ColdFusion应用程序有没有办法知道它是从调度器运行还是从浏览器运行?理想情况下,我希望在Application.cfm中设置一个会话标志,例如在整个应用程序中使用“isScheduled” 编辑 最后,我检查了用户代理,检查它是否在本地运行(以提高安全性),以及(因为它在Application.cfm中运行)页面是否位于允许调度的文件夹中: Request.isScheduled=FindNoCase(“CFSCHEDULE”,CGI.HTTP\u USER\u AGENT) 和(Fin

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

编辑 最后,我检查了用户代理,检查它是否在本地运行(以提高安全性),以及(因为它在Application.cfm中运行)页面是否位于允许调度的文件夹中:

Request.isScheduled=FindNoCase(“CFSCHEDULE”,CGI.HTTP\u USER\u AGENT)
和(Find(“10”),CGI.REMOTE_ADDR)=1
或查找(“198.162.”,CGI.REMOTE_ADDR)==1)

和FindNoCase(“预定”,CGI.CF_模板_路径)

我不确定,但如果应用程序通过调度程序运行,那么可以跟踪的所有请求的cgi.remote\u地址必须相同……并标记为“isSchedule”…

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

让任务调度器运行任务列表是一种常见做法,它会触发实际任务。例如,您运行了“dailytask.cfm”,其中cfm包含您要运行的任务。您现在可以向其中添加url.parameters或其他内容,以标识触发器的源。

我将Application.cfm逻辑嵌套在cfif中,以检查参数('cron')是否如果定义了,则跳过应用程序中的所有其他逻辑,如身份验证、头垃圾等


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

为什么您不能简单地传递一个查询字符串参数,并就此做出决定?该标志的一个用途是绕过用户身份验证(使用重定向到企业级中央身份验证服务页面)当由调度程序运行时,但所有其他时间都需要身份验证。虽然我是唯一知道要包含的查询参数的人,但这将为黑客打开一条可能的途径,我宁愿避免。检查用户代理不再安全。我可以轻松地在FireFox中更改我的用户代理-甚至还有一个附加使用r代理切换器使其易于更改。我一直这样做是为了测试。谢谢。我没有想到。谢谢。这很有效。我最终得到的结果是:Request.isScheduled=FindNoCase(“CFSCHEDULE”,CGI.HTTP\u USER\u Agent);但是,如果您将代码移植到其他服务器,则必须将代码交给该服务器。最后,我检查了http_用户_代理,并检查了远程_地址,以查看它是否是本地的(请参阅“编辑到原始问题”中的代码)。谢谢。