2

在使用 ColdFusion 创建自动计时脚本时,我需要一些帮助。每 60 分钟,我想查看我的一台服务器 ( http://www.mysite.com/ALERT.cfm ) 上的页面是否正常工作。

如果在检查的时候页面down了,那么它会在5分钟后再次检查,看看页面是否备份了。如果它没有备份,那么我会收到一封电子邮件至 email@mysite.com。如果已备份,则无需执行任何操作,我们再次开始 60 分钟循环检查。

我现在知道如何进行一次检查,但不是两次。

所以这是我正在使用的 CFschedule 代码

<cfhttp url="http://example.com/testpagetocheck.cfm" method="get" >
<cfif cfhttp.statusCode neq "200 OK">
<cfschedule action = "update"
task = "TaskName" 
operation = "HTTPRequest"
url = "http://www.example.com/ALERT.cfm"
startDate = "#createdate(2012,4,01)#"
startTime = "08:00 AM"
interval = "3600"
requestTimeOut = "10">
</cfif>

所以说我有 4 页 - 我想检查它是否关闭的页面(testpagetocheck.cfm),具有上述代码的 page1.cfm,如果 testpagetocheck 有 cfmail 向我发送消息的 ALERT.cfm .cfm 已关闭,然后 page2.cfm 再次具有上述代码,但间隔为“一次”,开始时间为 5 分钟。

从 Page1.cfm 到 alertMe.cfm 就像一个魅力。我收到了页面关闭的消息。页面 2.cfm 到 alertMe.cfm 也很漂亮。它还会向我发送一条消息,我正在检查的页面已关闭。但是,当我尝试从 page1.cfm 到 page 2.cfm 到 alertMe.cfm 时,page2.cfm 上的 cfschedule 似乎没有运行,所以当服务器处于 dowm 时我最终没有收到任何邮件。

谁能告诉我我做错了什么?我正在使用 CF7

4

3 回答 3

1

我认为逻辑本身是错误的。

其实你想做两件事:

  1. 创建一个计划以保持每隔一段时间请求一个页面。
  2. 该请求的页面(通过时间表)必须检查某个网站/页面是否关闭并采取行动。

所以首先创建一个文件来调用它一次。该文件 - 比如说 - createSchedule.cfm 它的工作是仅创建时间表。只需编写计划创建代码:

<cfschedule .... url="http://mysite.com/checksite.cfm" ... />

然后创建将每隔一段时间(由计划任务)请求的检查器文件 checksite.cfm。该文件 checksite.cfm 应包括 cfhttp 调用和 if 检查,如下所示:

<cfhttp url="http://mysite.com/thePageYouWantToCheck.cfm" method="get" >
<cfif cfhttp.statusCode neq "200 OK">
<!--- send the email here, or just include the Alert.cfm file that will do --->
</cfif>

最后只需调用文件 createSchedule.cfm 来安排一个任务,以继续请求 checksite.cfm,它将执行 cfhttp 检查并采取行动。


如果所有这些 cfm 文件都在一个 CFServer 上运行,那么如果服务器出现故障。所有这些都不起作用,我的意思是你永远不会收到警报。Bul 仅当 PageYouWantToCheck.cfm 发生错误或它正在其他 CFServer 上运行时才会收到警报,在这种情况下,即使 CFServer 出现故障,您也应该收到警报。

现在..有很多网站提供这项服务(Site Down Check)。有些是付费的,有些是免费的。长期以来,我使用的最好的免费软件是: http ://www.uptimerobot.com/ 它只是免费的,具有非常好的功能,请查看。

于 2012-04-01T18:26:54.500 回答
0

我第一次使用 cfschedule 时也遇到了一些麻烦。当您运行 cfschedule 标记时,如果它不存在,这只会创建任务/如果它存在则更新它。创建/更新任务后,您必须执行以下操作:

<cfschedule action="run" task="taskName">

当您将其设置为运行时,这将使任务运行。这不是您期望的最直观的事情,因为它已设置为在您设置它时运行。

于 2012-07-16T13:21:30.213 回答
0
<cfschedule action = "update"
task = "TaskName" 
operation = "HTTPRequest"
url = "http://www.mysite.com/ALERT.cfm?call=2"
startDate = "#createdate(2012,4,01)#"
startTime = "08:00 AM"
interval = "3600"
requestTimeOut = "10">

在此基础上在页面传递参数 call=2 中设置计划任务时,您可以设置条件是否需要通过电子邮件发送..

但我真的很惊讶你打电话给 CFM 页面来检查 CFM 页面是否关闭。如果 Coldfusion 关闭,那么您的计划任务将永远不会调用,并且您将永远不会收到电子邮件,除非您只是检查 alert.cfm get timed out 或其他 500 错误。

于 2012-04-02T03:50:15.953 回答