coldfusion - tareas - ¿Cómo puedo determinar si una tarea programada se ejecutó automáticamente o se ejecutó en un navegador?
ejecutar script con crontab (1)
Estoy ejecutando un código como una tarea programada, configurado en CF Administrator.
¿Hay alguna manera de indicar en el código que el código se ejecutó como una tarea programada, ya sea que se ejecutó haciendo clic en el icono de ejecución en el área de tareas programadas de CF Administrator, o si se invocó directamente en un navegador?
Agregar variables adicionales no funcionará?
Desde el enlace de prueba en el administrador de CF
Si está preguntando si puede identificar la diferencia entre una tarea programada que se ejecuta manualmente al hacer clic en el enlace de prueba en el administrador de ColdFusion o ejecutar a tiempo, puede habilitar el registro de tareas programadas. Cada vez que el usuario ejecute la tarea, la entrada del registro dirá [name of job] Executing because of user request at {timestamp}
. Si se ejecutó de forma natural, la entrada del registro dirá [name of job] Executing at {timestamp}
He buscado una forma de decir por código y no puedo encontrar nada. Dependerá de la precisión del programador, pero podría ver si now () es igual a la hora del programa. Algo así como (pseudo código):
<!--- 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>
Desde un navegador
Si desea saber si su programa fue ejecutado según el cronograma o si el navegador alcanzó el archivo, puede ver cgi.HTTP_USER_AGENT
. si el planificador lo ejecuta, será igual a CFSCHEDULE
contrario, será igual a lo que el cliente haya configurado para enviar.
Tal vez, Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11
o si tienes la suerte de tener un robot, algo así como: Mozilla/5.0 (compatible; MJ12bot/v1.4.3; http://www.majestic12.co.uk/bot.php?+)
Es posible falsificar la solicitud del cliente o servidor para hacer que el agente de usuario usuario diga CFSCHEDULE pero no es probable.
en otros comentarios...
El agente de usuario predeterminado para cfhttp es "COLDFUSION", en caso de que le interese.