Por fin terminé de darle forma a un nuevo proyecto que surgió luego de estar revisando viejos backups de trabajo.
El resultado tiene influencias de esos backups (años de scripts y automatizaciones), del cron de Magento y de algunos otros detalles que han ido surgiendo mientras investigaba un poco sobre frameworks para PHP-CLI.
Bender tiene dos objetivos:
- Centralizar las ejecuciones de cronjobs en un único lugar.
- Proveer una estructura mínima que permita concentrarse sólo en la tarea a ejecutar y que cuestiones más generales sean manejadas por la aplicación.
Contamos con dos archivos principales, uno que se encarga de disparar las acciones programadas ante una llamada del crontab y otro que inicia la consola interactiva que permite gestionar qué acciones y tareas se deben ejecutar y cuándo.
La estructura interna es bastante sencilla, se manejan sólo 3 entidades: Acciones, Tareas y Plugins.
- Las Acciones son aquello que se ejecutará. Por ejemplo, copiar un archivo, llamar a una API, enviar un email, etc.
- Las Tareas son la programación de ejecución de esas acciones.
- Los Plugins funcionan como clases genéricas que pueden utilizarse (y reutilizarse) dentro de las acciones.
Con este esquema, la idea es poder concentrarse en la programación de la acción, según necesitemos, y luego programar su ejecución.
Aún tengo pendiente finalizar los ejemplos, para mostrar cómo crear una acción y una tarea. En los próximos días habrá post y actualización de la documentación en la wiki del proyecto.