Ejecutar cron.php

From ProcessMaker
Jump to: navigation, search

Contents

ProcessMaker es una aplicación web que normalmente ejecuta acciones en respuesta a las acciones de un usuario. Eventos y el Programador de Casos (y Notificaciones en ProcessMaker versión 2.X) son sólo ejecutadas cuando el script de cron.php es ejecutado.

Para propósitos de prueba, el script de cron.php puede ser ejecutado ,manualmente desde un navegador web before version 1.2-3862Beta o desde el comando en línea en la version 1.2-3862Beta y posteriores. Para probar Eventos y el programador de casos que se producen en diferentes momentos de la hora del servidor del sistema actual, utilice la opción de especificar una fecha alternativa y el tiempo de la escritura (script).

Para su uso en producción, es mejor automatizar la ejecución de cron.php siguiendo las instrucciones a continuación o configurar un cron job en Linux/UNIX o establecer un Tarea programada en Windows. No es recomendable ejecutar cron.php más de una vez cada cinco minutes debido al peso del proceso que este infiere.

Ejecución manual de cron.php

Antes de la versión 1.2-3862Beta

Si se usa una versión anterior a ProcessMaker 1.2-3862Beta, el script cron.php puede ser ejecutado dirigiendo el navegador web a la dirección :
   http://<IP-ADDRESS>/sys<WORKSPACE>/en/green/services/cron.php

Por ejemplo, si el servidor de ProcessMaker está localizado en la dirección 12.345.6.789 y usa el espacio de trabajo por defecto "workflow":
   http://12.345.6.789/sysworkflow/en/green/services/cron.php

Versión 1.2-3862 Beta y posterior

Por razones de seguridad, cron.php ya no debe ser ejecutado desde el navegador web en la versión 1.2-3862Beta y posteriores (Porque puede ser usado en denegación de servicio ataques que sobrecarguen el servidor). En vez, cron.php está ejecutado desde el comando en línea, el cual significa que PHP-CLI debe ser instalado en un servidor ejecutando ProcessMaker. El ProcessMaker Windows Installer instala automáticamente PHP-CLI, pero puede no ser instalado si ProcessMaker fue instalado manualmente.

Para probar si Eventos o los Casos Programados están correctamente configurados, ejecutar el archivo cron.php linea de comandos.

Windows:

Si ProcessMaker fue instalado con el Instalador de Windows antes de la versión 1.6-4260:

"C:\Program Files\ProcessMaker\php\php.exe" -f ..\apps\processmaker\htdocs\workflow\engine\bin\cron.php

Si ProcessMaker fue instalado con una nueva instalación de Windows en la versión 1.6-4260 o posteriores:

"C:\<INSTALL-DIRECTORY>\php\php.exe" -f ..\processmaker\workflow\engine\bin\cron.php 

Linux/UNIX:

php -f /opt/processmaker/workflow/engine/bin/cron.php

Si el script de cron.php es ejecutado sin ninguna opción, todas las notificaciones pendientes, Eventos y Casos Programados serán automáticamente ejecutados para todos los espacios de trabajo. Para salvar el procesamiento, puede ser útil especificar sólo ciertos espacios de trabajo o especificar sólo cierto tipo de actividades a ser ejecutadas (Eventos o Casos Programados). Para propósitos de prueba, la opción "+d" puede ser usada para especificar un fecha alternativa y tiempo para el script, para que los eventos y Casos Programados en el pasado o futuro puedan ser ejecutados.

Sintaxis de las opciones cron.php

cron.php [+d"YYYY-MM-DD HH:MM:SS"] [+wWORKSPACE] [ACTIVITIES]

Opciones:

  • +d Specify an alternative date and time for the script.
Por defecto, el script se ejecutará usando el actual sistema de tiempo del servidor. Si puede ser útil especificar una fecha alternativa cuando se prueban eventos pasados, futuros o scheduled cases. Recuerde usar 4 dígitos para especificar el año y 2 dígitos para especificar el mes, día, hora, minuto o segundo. El tiempo está en formato de 24 horas.
Ej:   cron.php +d"2011-09-25 07:05:59"
  • +w Especificar un espacio de trabajo que actividades pendientes serán ejecutadas.
Por defecto, las actividades pendientes en all todos los espacios de trabajo, serán ejecutadas. Para salvar procesos, puede ser útil ejecutar las actividades pendientes en un simple espacio de trabajo. Recuerde que los nombres de espacios de trabajo son sensibles al caso.
Ej:   cron.php +wworkflow
  • ACTIVITIES Define que actividades deben ser ejecutadas:
events – Ejecutar cualquier evento pendiente.
scheduler – Ejecutar cualquier caso pendiente en scheduled cases.
unpause – Des pausar aplicaciones.
emails – Re enviar y cualquier mail pendiente.
plugins – Activar plugins.
calculate – Calcular la duración de tiempo transcurrido por tarea.
Múltiples actividades pueden ser especificadas separando cada una con espacios:
Ej:   cron.php events emails plugins

Cuando cron.php se ejecute, éste reportará que actividades fueron ejecutadas y cuantos espacios de trabajo fueron procesados:

 $ php -f /opt/processmaker/workflow/engine/bin/cron.php
Processing workspace: workflow
* Resending emails............................................[DONE]
* Unpausing applications......................................[DONE]
* Calculating Duration........................................[DONE]
* Executing events............................................[PROCESSING]
* |- End Execution events.....................................[Processed 0]
* Executing the scheduled starting cases......................[PROCESSING]
[DONE]

Finished 1 workspaces processed.

Archivos Log del cron.php

Si existe la necesidad de seguir el paso a las acciones tomadas por el script cron.php, ver el archivo shared/log/cron.log el cual sigue un registro de todas sus acciones. Cada línea en el archivo de registro tiene el siguiente formato:

Fecha, hora, (acción) descripción

Si la acción es "executeEvents", entonces el archivo de registro listará ambos, el tiempo de inicio y de fin.

$ cat /opt/processmaker/shared/log/cron.log
2010-11-26 14:25:13(main) checking folder /opt/pm4260/shared/sites/workflow
2010-11-26 14:25:14(unpauseApplications)  Aplicación de despausar 
2010-11-26 14:25:14(calculateDuration) Duración del  cálculo 

2010-11-26 14:25:14(executeEvents) Ejecutar Eventos 2010-11-26 14:25:13, 2010-11-26 14:25:13

2010-11-26 17:12:36(main) checking folder /opt/pm4260/shared/sites/workflow
2010-11-26 17:12:36(resendEmails) Re envío de Emails
2010-11-26 17:12:37(unpauseApplications) Despausar  Aplicaciones 
2010-11-26 17:12:37(calculateDuration) Duración de Cálculos 
2010-11-26 17:12:37(executeEvents) Ejecutar  Eventos 2010-11-26 17:12:19, 2010-11-26 17:12:36 

Si un erros ocurre en el script cron.php, el archivo shared/log/cronError.logserá creado para :

$ cat /opt/processmaker/shared/log/cronError.log
2010-11-26 14:25:14(resendEmails) Error en el re envío  de Emails: Los 'Emails, , , , '  en la tabla de configuración no existen!

Por ejemplo este mensaje de error, indica que la configuración de correos en ProcessMaker no han sido configurados.

Si necesita saber si el script cron.php está siendo ejecutado actualmente o, cuando fue la última vez que se lo ejecutó, ver el archivo serializado contenidos de archivo shared/cron. Si los valores de bCronIsRunning es "1", entonces el script estará actualmente ejecutado. Si es "0", entonces el script no está siendo actualemente ejecutado.

$ cat /opt/processmaker/shared/cron 
a:2:{s:14:"bCronIsRunning";s:1:"0";s:14:"sLastExecution";s:19:"2010-11-26 17:12:37";}

Alternativamente, abrir el archivo con un script PHP y deserealizandolo:

<?php
si (file_exists("/opt/processmaker/shared/cron")) {
   $aCron = unserialize(file_get_contents("/opt/processmaker/shared/cron"));
   if ($aCron['bCronIsRunning'] == 0) { // if cron.php is NOT currently running 
       ... //do something
   }
}
?>

Configurando el crontab en Linux/UNIX

En Linux/UNIX, los commandos pueden ser ejecutados en el cronograma de tiempo con el cron. Para configurar el cron para una ejecución periódica de los archivos de ProcessMaker cron.php, ingresar como un usuario root y editar el archivo /etc/crontab con su editor de texto favorito.

En el archivo crontab, el temporizador de los comandos es listado de acuerdo al formato:

Minuto, hora, día-del-mes-de la semana, comando de usuario

Donde:

Field Description
minute El minuto de la hora cuando el comando es ejecutado, puede ser entre 0-59.
hour La hora cuando el comando es ejecutado. Puede ser entre 0-23. 0 es media noche.
day-of-month Día del mes cuando el comando es ejecutado. Por ejemplo 20 puede ser el 20avo día en cada més.
month Mes cuando el comando es ejecutado. Puede ser un número entre 1-12 o las primeras tres letras del mes en Inglés, como: jan, feb, etc.
day-of-week Día de la semana cuando el comando es ejecutado. Puede ser un número entre 0 y 7, donde 0 y 7 son ambos Sunday, 1 es Monday, 2 es Tuesday, etc. Alternativamente, puede ser las tres primeras letras del día en ingles cómo such as sun, mon, etc.
user El nombre de usuario que ejecutará el comando.
Comand comando, script o programa a ejecutar.

Un asterisco * en las primeras cinco columnas indican todos los posibles valores. Por ejemplo, un asterisco en la columna de minutos indica todos los minutos en una hora. Si un asterisco es dividido por un número "*/#", entonces es para cualquier unidad de tiempo que puede ser limpiamente dividida sin ningún recordatorio. Por ejemplo en un día con 0-23 horas, "*/5" puede ser ejecutado en 0, 5, 10, 15 y 20 horas.

Antes de la versión 1.2-3862Beta:

Por ejemplo para ejecutar el cron.php que se encuentra en el servidor en 192.168.2.100 en el espacio de trabajo, cada 30 minutos:

*/30 * * * * root wget -q -F -O - http://192.168.2.100/sysworkflow/en/green/services/cron.php

En éste ejemplo, la primera columna "*/30" significa cada 30 minutos. wget es un programa que baja archivos. -q para --quiet, el cual suprime el output. -F para --force-html,el cual trata los archivos descargados como archivos en HTML. -O para --output-document el cual concatena todos los archivos descargados a escribirlos a una ubicación, que en este caso es "-", que significa el actual output este output es tratado como un comando que será ejecutado por cron.

Versión 1.2-3862Beta y posteriores:

Por ejemplo para ejecutar el cron.php cada 15 minutos en linea de comandos:

*/15 * * * * root php -f /opt/processmaker/workflow/engine/bin/cron.php

En éste ejemplo, La primera columna "*/15" significa ejecutar el comando cada 15 minutos.

Para más infomación de cómo configurar el crontab, ver este tutorial (o este tutorial en Español).

Programar tareas en Windows

El script cron.php puede ser periódicamente ejecutado en Windows en el Programador de Tareas. Para configurar esta ejecución, ya sea se use el SCHTASKS comando en DOS o se cree una tarea programada en la interfaz gráfica.

Comando SCHTASKS

El comando SCHTASKS es usado para crear, borrar, preguntar, cambiar, ejecutar y terminar Windows Scheduled Tasks. Ingresar a Windows como un administrador y abrir el sistema y abrir el símbolo del sistema. A continuación, crear una tarea programada para ejecutar periódicamente cron.php script:

SCHTASKS /Create /U username /P password /SC MINUTE /MO number-minutes /TR command

Donde number-minutes cuan seguido el script cron.php es ejecutado en minutos y command es el comando a ejecutar cron.php en el script. El command debe estar encerrado en doble comilla. Si contiene cualquier ruta u opciones que contienen espacios, entonces deberán ser encerrados en comilla simples o escapear de la comillas dobles. (Escapear de las comillas se hace con barras: \"). Para continuar un comando en la siguiente línea, use "^" como el último carácter en la línea.

Por ejemplo, para ejecutar el cron.php ejecutar el script cada 15 minutos para el servidor de ProcessMaker instalado en c:\Users\Bob\AppData\Roaming\ProcessMaker-2_0_30\:

SCHTASKS /Create /U administrator /P p4s5w0rd /SC MINUTE /MO 15 /TR ^
"C:\Users\Bob\AppData\Roaming\ProcessMaker-2_0_30\php\php.exe -f ..\processmaker\workflow\engine\bin\cron.php" 

Por ejemplo para ejecutar el cron.php ejecutar el script solo en el espacio de trabajo "sales" cada 20 minutos para un servidor de ProcessMaker instalado en C:\Program Files\ProcessMaker\apps\processmaker:

SCHTASKS /Create /U administrator /P p4s5w0rd /SC MINUTE /MO 20 /TR ^
"'C:\Program Files\ProcessMaker\php\php.exe' -f ..\apps\processmaker\htdocs\workflow\engine\bin\cron.php +wsales" 

Después de programar la ejecución periódica de cron.php, verificar que este en la lista de tareas cronometradas:

SCHTASKS /Query 

Para más información acerca del comando SCHTASKS:

SCHTASKS /?

Para más información acerca de las opciones para /Create:

SCHTASKS /Create /?

Programar tareas para Windows XP

  • En el servidor que ejecuta ProcessMaker, abrir el programador de tareas yendo a Inicio > Programas > Accesorios > Herramientas de Sistema > Tareas Programadas
  • Hacer doble-click en Agregar tarea programada
  • El Asistente para tarea nueva programada aparecerá. Hacer click en Siguiente.
  • Ingrese el comando a ejecutar cron.php.

Antes de la versión 1.2-3862Beta:

Si usa la versión de ProcessMaker 1.2-3862Beta o anteriores, ingrese al cmando cron.php dentro del navegador web. Por ejemplo, Si se usa Mozilla Firefox en un server ubicado en 192.168.2.100, el cual use el espacio de trabajo "workflow" entonces el comando será:
"C:\Program Files\Mozilla Firefox\firefox.exe" http://192.168.2.100/sysworkflow/en/green/services/cron.php
Usar un navegador web para ejecutar el script cron.php que causará que el navegador web haga pop-up periódicamente. Si esta no es la solución deseada el script cron.php puede ser ejecutado en el background con wget on Windows. Para instalarlo, descragar wget zipped executable. Crear un folder para almacenar los ejecutables como C:\Program Files\wget\ y abrirlo ahí. Luego, use el comando a continuación para ejecutar como Scheduled Task:
"c:\Program Files\wget\wget.exe" -q -F -O - http://192.168.2.100/sysworkflow/en/green/services/cron.php

Version 1.2-3862Beta o posteriores:

Si se usa ProcessMaker versión 1.2-3862Beta o posteriors, luego ingresar un comando para ejecutar cron.php desde la línea de comando:
"C:\Program Files\ProcessMaker\php\php.exe" -f ..\processmaker\htdocs\workflow\engine\bin\cron.php

Luego hacer click en Next.

  • Dar un nombre a la tarea, como "ProcessMaker Cron Job", y escoger la frecuencia para realizarla (Por ejemplo, diariamente)). Hacer click en Siguiente.
  • Escoger una hora y fecha específica (Este paso variará, dependiendo de la opción seleccionada en el paso previo).Cuando haya finalizado, hacer un click en Siguiente.
  • ingrese su contraseña si es requerida. Cambie el nombre de usuario si es requerido (Por ejemplo, quisiera que la tarea la ejecute un usuario con pocos privilegios por razones de seguridad).Hacer click en Siguiente.
  • En la última página, seleccionar el checkbox abrir propiedades avanzadas para esta tarea cuando haga click en Finish y haga click en Finish.
Personal tools
Community Editions
ProcessMaker Editions
Share This
In other languages