En cuanto tienes una aplicación con un mínimo de complejidad, enseguida identificas que necesitas ejecutar tareas en segundo plano o batch, para ejecutar procesos a determinadas horas, por ejemplo, migración de información, backup de tu sistema, etc.
Si dispones de la totalidad de acceso a tu sistema, enseguida te acuerdas de CRON o Crontab, que es el planificador de tareas del sistema operativo.
No siempre tienes total acceso para este tipo de configuración y además es complejo. Además, tienes el problema de que pasar tu aplicación de una máquina a otra, tienes que recordar que hay acciones fuera de tu aplicativo, por lo que es una posible fuente de problemas.
He diseñado un sistema que permite integrarse 100% con PHPrunner y que elimina el problema de migración de configuración, y facilita la definición y gestión de estas tareas Batch.
Objetivo
Disponer de un sistema, similar en funcionalidad al Crontab y totalmente integrado con PHPRunner.
Este sistema debe permitir:
- Definir las tareas en formularios hechos en PHPRunner, en donde se especifique:
- Fecha inicial de ejecución de la Tarea.
- Fecha final de ejecución de la Tarea.
- Intervalo de ejecución, definido en meses, días, horas y minutos.
- Comando de ejecución con path variable dependiendo de la ubicación del aplicativo.
- Registro por cada ejecución que indique: hora de inicio, hora de final y resultado de la ejecución.
- Definición de tiempo máximo de ejecución y si se supera, cancelación del proceso.
- Ejecución única en el sistema de una tarea Batch (para no sobrecargar el sistema).
- En las tareas Batch, posibilidad de trazas, para depuración y control, integrada con la aplicación de PHPRunner.
- Normalización de las tareas Batch, para utilizar la conexión de base de datos del aplicativo de PHPRunner (facilidad en la migración entre sistemas).
DEMO: https://fhumanes.com/scheduler/
(Esta versión está limitada para impedir mal uso de los ejemplos)
Información que tratamos para cada tarea. No se ejecuta cuando está marcada el campo de «Status finished» o le campo «Date Next Execution» es inferior a la fecha actual.
También, en la definición del comando a ejecutar hay estas sustituciones:
{DIR} .- Se sustituye por el path donde se este ejecutando el aplicativo
{ID_TASK} .- Se sustituye por el ID del registro de log de ejecución.
Si te interesa este tema, sigue este enlace para ver el artículo completo.
Un desarrollador de PHPRunner me escribió indicándome que tenía problemas en utilizar el «lookup» del plugin «Select2» en ventana «popup» y que le gustaría disponer de la funcionalidad de «dependencia», similar a la funcionalidad estándar del «lookup» de PHPRunner.
Reconozco que soy un entusiasta de esta biblioteca de JavaScript 
