我将一些代码作为计划任务运行,在CF Administrator中进行设置。
有没有办法在代码中判断代码是作为计划任务运行的,是通过单击CF Administrator计划任务区域中的运行图标运行的,还是直接在浏览器中调用的?
添加额外的变量将不起作用?
发布于 2012-12-21 02:48:23
从CF管理中的测试链接
如果您询问是否可以通过单击coldfusion管理中的测试链接来识别手动运行的计划任务和按计划运行的计划任务之间的区别,则可以启用计划任务的日志记录。每当用户运行任务时,日志条目都会显示为[name of job] Executing because of user request at {timestamp}
。如果它正常运行,日志条目将显示为[name of job] Executing at {timestamp}
我一直在寻找一种通过代码来判断的方法,但我什么也找不到。这取决于调度程序的准确性,但您可以查看now()是否等于调度的时间。类似于(伪代码):
<!--- disclaimer: I've heard stories that cfschedule sometimes runs a little late --->
<cfset scheduleTime = "2:00 am">
<cfif cgi.HTTP_USER_AGENT eq "CFSCHEDULE" and timeFormat(now(), "h:mm tt") eq scheduleTime>
<!--- ran naturally --->
<cfelse>
<!--- ran by force --->
</cfif>
从浏览器
如果您想知道您的计划任务是否按计划运行,或者文件是否被浏览器命中,您可以查看cgi.HTTP_USER_AGENT
。如果它是由调度程序运行的,它将等于CFSCHEDULE
,否则它将等于客户端设置为发送的任何内容。
也许吧,Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11
或者,如果你足够幸运,有一个机器人点击它,例如:Mozilla/5.0 (compatible; MJ12bot/v1.4.3; http://www.majestic12.co.uk/bot.php?+)
假冒客户机或服务器请求使用户代理CFSCHEDULE是可能的,但可能性不大。
顺便说一下..。
如果您感兴趣,cfhttp的默认用户代理是"COLDFUSION“。
https://stackoverflow.com/questions/13977831
复制相似问题