Coldfusion: обнаружение, если запускается планировщиком - PullRequest
5 голосов
/ 22 июля 2011

Есть ли способ для приложения ColdFusion узнать, запускается ли оно из планировщика или из браузера?В идеале я хотел бы установить флаг Session, например, isScheduled в Application.cfm, который будет использоваться во всем приложении.

РЕДАКТИРОВАТЬ Я закончил тем, что проверил пользовательский агент, и что он запускается локально (для повышения безопасности), и (так как он работает в Application.cfm) что страница находится в папке, которая позволяет планировать:

Request.isScheduled = FindNoCase("CFSCHEDULE",CGI.HTTP_USER_AGENT) and (Find("10.",CGI.REMOTE_ADDR)==1 or Find("198.162.",CGI.REMOTE_ADDR)==1) and FindNoCase("scheduled",CGI.CF_TEMPLATE_PATH);

Ответы [ 4 ]

4 голосов
/ 22 июля 2011

Проверьте для агента пользователя.Пользовательский агент "CFSCHEDULE", но сначала подтвердите это.

1 голос
/ 23 ноября 2011

Я вложил свою логику Application.cfm в cfif, который проверяет, определен ли параметр ('cron'). Если это так, тогда он пропускает всю остальную логику в приложении, такую ​​как аутентификация, хлам заголовка и т. Д.

Затем, когда я настраиваю запланированные задачи, я передаю URL, который я хочу указать параметром cron (http://mysite.com/scheduledtasks.cfm?cron=yo)

0 голосов
/ 23 июля 2011

Обычной практикой является позволить планировщику задач запускать список задач, которые, в свою очередь, запускают реальные задачи. То есть вы запустили файл dailytask.cfm, который включает задачу, которую вы хотите запустить. Теперь вы можете добавить к ней url.parameters или другие параметры, чтобы определить источник триггера.

0 голосов
/ 22 июля 2011

Я не уверен, но если приложение запускается через планировщик, тогда cgi.remote_address должен быть одинаковым для всех запросов, которые вы можете отслеживать ..... и пометить "isSchedule" ....

...