Как определить, было ли запланированное задание выполнено автоматически или в браузере?
Я запускаю некоторый код в качестве запланированной задачи, настройка в CF Administrator.
Есть ли способ указать в коде, что код выполнялся как запланированная задача, выполнялся ли он нажатием на значок запуска в области запланированных задач CF Administrator или он вызывался непосредственно в браузере?
Добавление дополнительных переменных не будет работать?
1 ответ
Из тестовой ссылки в админке CF
Если вы спрашиваете, можете ли вы определить разницу между запланированной задачей, выполняемой вручную, щелкнув ссылку теста в администраторе Coldfusion или запустить по расписанию, вы можете включить ведение журнала запланированных задач. Каждый раз, когда задача запускается пользователем, запись в журнале скажет [name of job] Executing because of user request at {timestamp}
, Если он запустился естественным образом, запись в журнале скажет [name of job] Executing at {timestamp}
Я искал способ сказать по коду и не могу ничего найти. Это будет зависеть от точности планировщика, но вы можете посмотреть, равно ли now() времени расписания. Что-то вроде (псевдокод):
<!--- disclaimer: I've heard stories that cfschedule sometimes runs a little late --->
<cfset scheduleTime = "2:00 am">
<cfif cgi.HTTP_USER_AGENT eq "CFSCHEDULE" and timeFormat(now(), "h:mm tt") eq scheduleTime>
<!--- ran naturally --->
<cfelse>
<!--- ran by force --->
</cfif>
Из браузера
Если вы хотите узнать, было ли запланированное задание выполнено по расписанию или файл был загружен браузером, вы можете посмотреть на cgi.HTTP_USER_AGENT
, если он запущен планировщиком, он будет равен CFSCHEDULE
в противном случае он будет равен тому, что клиент настроен на отправку.
Может быть, Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11
или если вам повезло, что бот ударил его, что-то вроде: Mozilla/5.0 (compatible; MJ12bot/v1.4.3; http://www.majestic12.co.uk/bot.php?+)
Можно подделать запрос клиента или сервера, чтобы пользовательский пользовательский агент сказал CFSCHEDULE, но это маловероятно.
на заметку...
Пользовательский агент по умолчанию для cfhttp - "COLDFUSION", на случай, если вам это интересно.