CFSchedule не работает дважды, ищем сценарий проверки времени простоя ColdFusion

Мне нужна помощь в создании скрипта автоматической синхронизации с помощью 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 для alertMe.cfm работает как шарм. Мне прислали сообщение о том, что страница не работает. Страница 2.cfm для alertMe.cfm также прекрасно работает. Он также отправляет мне сообщение о том, что страница, которую я проверяю, не работает. Но когда я пытаюсь перейти со страницы page1.cfm на страницу 2.cfm и далее в alertMe.cfm, кажется, что cfschedule на странице page2.cfm не работает, поэтому я не получаю никакой почты, когда сервер не работает.

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


person Mike    schedule 01.04.2012    source источник


Ответы (3)


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

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

  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 получит предупреждение только в том случае, если ошибка произошла на thePageYouWantToCheck.cfm или она была запущена на другом CFServer, в этом случае, даже если CFServer выйдет из строя, вы должны получить предупреждение.

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

person Ameen Rabea    schedule 01.04.2012
comment
спасибо, но я хочу, чтобы он проверял каждые 60 минут, и если страница не работает, проверяйте снова через 5 минут. предложенное вами решение этого не делает. - person Mike; 01.04.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">

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

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

person Pritesh Patel    schedule 02.04.2012

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

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

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

person David Lance    schedule 16.07.2012