CFSchedule не работает дважды, в поисках сценария проверки простоя ColdFusion - PullRequest
2 голосов
/ 01 апреля 2012

Мне нужна помощь в создании сценария автоматического хронирования с ColdFusion. Каждые 60 минут я хотел бы видеть, работает ли страница на одном из моих серверов (http://www.mysite.com/ALERT.cfm) или нет.

Если страница закрыта при проверке, то через 5 минут она снова проверит, чтобы проверить, вернулась ли страница. Если это не резервное копирование, то я отправляю электронное письмо на адрес электронной почты@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 с вышеуказанным кодом, ALERT.cfm, где есть cfmail, чтобы отправить мне сообщение, если testpagetocheck.cfm не работает, а затем page2.cfm снова имеет вышеуказанный код, но с интервалом «один раз» и временем начала 5 минут.

Page1.cfm to alertMe.cfm работает как шарм. Мне отправлено сообщение о недоступности страницы. Страница 2.cfm для alertMe.cfm также прекрасно работает. Он также отправляет мне сообщение, страница, которую я проверяю, не работает. Но когда я пытаюсь перейти от page1.cfm к page 2.cfm к alertMe.cfm, это не похоже на то, что cfschedule на page2.cfm работает, поэтому я не получаю никакой почты, когда сервер не работает.

Может кто-нибудь сказать мне, что я делаю не так? Я использую CF7

Ответы [ 3 ]

1 голос
/ 01 апреля 2012

Я думаю, что сама логика неверна.

На самом деле вы хотите сделать две вещи:

  1. Создать расписание для постоянного запроса страницы.
  2. эта запрашиваемая страница (через расписание) должнапроверьте, не работает ли определенный веб-сайт или страница, и примите меры.

Поэтому сначала создайте файл, чтобы вызвать его один раз.Этот файл, скажем, createSchedule.cfm, его работа заключается только в создании расписания.Просто напишите код создания расписания:

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

Затем создайте файл чеков checkite.cfm, который будет запрашиваться каждый раз (с помощью запланированной задачи).Этот файл checkite.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, чтобы запланировать задачу на продолжение запроса checkite.cfm, который будет выполнять проверку cfhttpи принять меры.


Если все эти файлы cfm работают на одном CFServer, то если сервер отключается.Все они не будут работать, я имею в виду, вы никогда не получите предупреждение.Bul получит оповещение, только если произошла ошибка вPageYouWantToCheck.cfm или он работал на другом CFServer, в этом случае, даже если CFServer не работает, вы должны получить предупреждение.

Сейчас .. Есть много веб-сайтов, которые предоставляютэтот сервис (Site Down Check).Некоторые платные, а другие бесплатные.Лучшая бесплатная версия, которую я использую с давних времен, это: http://www.uptimerobot.com/ Это бесплатно только с очень хорошими функциями, проверьте это.

0 голосов
/ 16 июля 2012

У меня были некоторые проблемы с этим, когда я впервые использовал cfschedule.Когда вы запускаете тег cfschedule, он просто создает задачу, если она не существует, или обновляет ее, если она существует.После создания / обновления задачи вам необходимо выполнить следующие действия:

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

Это запустит задачу, когда вы настроите ее для запуска.Это не самая интуитивно понятная вещь, так как вы ожидаете, что, поскольку она настроена, она будет работать, когда вы ее настроите.

0 голосов
/ 02 апреля 2012
<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">

Пока вы настраиваете задачу расписания в параметре вызова страницы = 2 для этой базы, вы можете поставить условие, нужно ли вам по электронной почте или нет ..

Но я действительно удивлен, что вы звоните на страницу CFM, чтобы проверить, что страница CFM не работает. Если Coldfusion не работает, ваша задача по расписанию никогда не будет вызываться, и вы никогда не получите электронное письмо для этого, если только вы не проверяете время ожидания alert.cfm или другую ошибку 500.

...