Как получить список запланированных задач и результаты последнего запуска в ColdFusion?

StackOverflow https://stackoverflow.com/questions/2320396

Вопрос

Мы пытаемся создать панель мониторинга для наших заданий cron ---- CF, Java, SQLServer и т. д.чтобы мы могли видеть, когда что-то запускалось в последний раз, каков был результат и когда запланировано следующее выполнение.

Есть ли способ с помощью CFAdmin API или какого-либо недокументированного <cfschedule> трюк, чтобы получить список:

  1. Какие задачи запланированы?
  2. Какое время последнего запуска было?
  3. Удалось ли это?
  4. Когда планируется его повторный запуск?

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

Это было полезно?

Решение

Я провел для вас небольшое исследование по этому поводу.Я нашел несколько более старую ссылку, которая все еще действительна, по крайней мере, в CF8 и, предположительно, также и в CF9.

<cfobject type="JAVA" action="Create" name="factory" class="coldfusion.server.ServiceFactory">
<cfset allTasks = factory.CronService.listAll()/>
<cfloop index="i" from="1" to="#ArrayLen(allTasks)#">
    <cfdump var="#allTasks[i]#" />
</cfloop>

От http://www.bpurcell.org/blog/index.cfm?mode=entry&ENTRY=935

Это ответ на ваши вопросы №1 и №4.Что касается пункта 3, то на него не может быть ответа.Механизм запланированных задач ColdFusion просто загружает указанный URL-адрес в заданное время.Нет успеха или неудачи — он просто выполняет HTTP-запрос.

Надеюсь это поможет.

Другие советы

Есть возможность «Опубликовать» результаты работы.Ответ на HTTP-запрос может быть записан на файловый сервер и будет содержать значения последнего запущенного задания.

<cfschedule action = "update"
    task = "TaskName" 
    operation = "HTTPRequest"
    url = "/index.cfm?action=task"
    startDate = "#STARTDATE#"
    startTime = "12:00:00 AM"
    interval = "Daily"
    resolveURL = "NO"
    requestTimeOut = "600"
    publish = "yes"
    path = "#PATH#"
    file = "log_file.log">

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

@eric kolb прав — именно так можно сделать это программно.Если вам нужен больший контроль над реакцией списка, попробуйте следующий код (по сути тот же самый, но в cfscript):

<cfscript>
scheduledTasksArray=ArrayNew(1);
taskService=createobject('java','coldfusion.server.ServiceFactory').getCronService();
scheduledTasksArray=taskservice.listall();

Кроме того, чтобы ответить на вопросы № 2 и № 3 (это, по сути, всего лишь один вопрос, состоящий из двух частей, если вы все сделаете правильно):Когда задача будет запущена, отправьте себе электронное письмо прямо вверху со словами «ЭЙ!Я БЕГУ!!!!», а затем еще один: «ЭЙ!Я СДЕЛАНО!!!» в нижней части кода задачи — вы также можете добавить временную метку, чтобы указать, когда она началась и остановилась (регистрация этого в базе данных тоже работает).Кроме того, чтобы узнать, когда он будет запущен в следующий раз, просто посмотрите на последний раз И поле «интервал», полученное из результатов вызова ServiceFactory.(Если вам нужно дальнейшее объяснение того, что я имею в виду, не стесняйтесь спрашивать.

Надеюсь, это поможет, если вы еще не поняли, что вам нужно

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top