在Coldfusion .cfc文件中创建内部时钟以执行计划的任务

时间:2018-08-23 17:06:16

标签: time coldfusion coldfusion-2016

我需要根据不断变化的内部时钟来执行计划的任务。我知道使用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,则表示未定义。我确定我在做一些愚蠢的事情,但我会感谢您的帮助。

谢谢大家的帮助。

1 个答案:

答案 0 :(得分:2)

这实际上可以通过Coldfusion Administrator中的计划任务来完成。在实际发布这篇文章之前,我不知道这是一件事情。我很抱歉。

谢谢