Guía 73 – Planificador de Tareas Batch

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.