我需要根据不断变化的内部时钟来执行计划的任务。我知道使用Javascript可以实现,但是此解决方案将需要托管在Application.cfc文件中。我试图仅在OnRequestStart函数中使用“ Now”函数,但是问题是,如果我需要在午夜发送电子邮件给某人,但是没人在午夜发出请求,则该电子邮件将不会发送。我尝试在OnApplicationStart函数中也执行相同的功能,但是理想情况下只能运行一次。我当时正在考虑在OnApplicationStart函数中使用CreateTime方法,但是如果可以的话,如何实时增加时间。我希望在实际需要的内容上更加清楚。这是我尝试过的一些代码,但是我不确定如何诚实地测试它。
<cffunction NAME="internalclock">
<cfset today = #day(Now())#>
<cfset h = #hour(Now())#>
<cfset m = #minute(Now())#>
<cfset s = #second(Now())#>
<cfset m = #checktime(m)#>
<cfset s = #checktime(s)#>
<cfsetting requestTimeOut = ".5">
</cffunction>
<cffunction NAME="checktime">
<cfif i LESS THAN 10 > i="0"+i
<cfreturn i>
</cfif>
</cffunction>
编辑: 我在访问page2.cfc文件中的变量时遇到一些问题。数据流的方式是,我在Application.cfc文件中初始化变量,在page2.cfc中重写相同的变量,并在page3.cfm中访问修改后的变量。 Page3.cfm只是一项测试,以确保实际上定义了变量并按预期进行了更新。我应该提到page2.cfc上有计划任务,并且每分钟运行一次。这是一些示例代码:
Application.cfc
<CFFUNCTION NAME="OnApplicationStart">
<cfset Application.currenttime = 0>
</CFFUNCTION>
page2.cfc
<CFFUNCTION NAME ="Counter">
<cfset Application.currenttime = #Now()#>
</CFFUNCTION>
page3.cfm
<cfoutput>
#Application.currenttime#
</cfoutput>
我得到的错误是当前时间变量显示为0,或者如果我将输出更改为Counter.currenttime
,则表示未定义。我确定我在做一些愚蠢的事情,但我会感谢您的帮助。
谢谢大家的帮助。
答案 0 :(得分:2)
这实际上可以通过Coldfusion Administrator中的计划任务来完成。在实际发布这篇文章之前,我不知道这是一件事情。我很抱歉。
谢谢