2

ColdFusion で自動タイミング スクリプトを作成する際に、助けが必要です。60 分ごとに、サーバー ( http://www.mysite.com/ALERT.cfm )の 1 つのページが機能しているかどうかを確認したいと考えています。

チェック時にページがダウンしている場合は、5 分後に再度チェックして、ページがバックアップされているかどうかを確認します。バックアップされていない場合は、email@mysite.com に電子メールが送信されます。バックアップされている場合は、アクションは必要なく、60 分周期のチェックを再度開始します。

1 つのチェックを行う方法は理解できましたが、2 つのチェックは理解できませんでした。

ここに私が使用している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 に再び上記のコードが含まれますが、間隔は「1 回」で、開始時刻は今から 5 分です。

Page1.cfm から alertMe.cfm への変換は魅力的です。ページがダウンしているというメッセージが送信されます。Page 2.cfm から alertMe.cfm への変換も見事に機能します。また、チェックしているページがダウンしているというメッセージも送信されます。しかし、page1.cfm から page 2.cfm、alertMe.cfm に移動しようとすると、page2.cfm の cfschedule が実行されているように見えないため、サーバーが dowm の場合にメールが届かなくなります。

誰が私が間違っているのか教えてもらえますか? CF7を使用しています

4

3 に答える 3

1

ロジック自体が間違っていると思います。

実際には、次の 2 つのことを行います。

  1. 定期的にページをリクエストし続けるスケジュールを作成します。
  2. 要求されたページ (スケジュールを通じて) は、特定の Web サイト/ページがダウンしているかどうかを確認し、アクションを実行する必要があります。

そのため、最初に一度呼び出すファイルを作成します。そのファイル (たとえば 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 を呼び出してタスクをスケジュールし、cfhttp チェックを実行してアクションを実行する checksite.cfm を要求し続けるようにします。


これらのすべての cfm ファイルが 1 つの CFServer で実行されている場合、サーバーがダウンすると. それらはすべて機能しません。つまり、アラートを受け取ることはありません。Bul は、thePageYouWantToCheck.cfm でエラーが発生した場合、または他の CFServer で実行されていた場合にのみアラートを受け取ります。この場合、CFServer がダウンしてもアラートを受け取るはずです。

今.. このサービスを提供する多くの Web サイトがあります (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 に答える