¿Qué es un planificador de tareas PHP?
Un planificador de tareas (Job Scheduler) es una biblioteca para PHP que permite ejecutar tareas periódicas (tareas cron) directamente desde el código de la aplicación, sin depender del crond del sistema. Es especialmente útil en hosting compartido, donde el acceso a crontab es limitado, o en entornos contenerizados (Docker).
¿Para qué sirve un planificador?
- Autonomía — todas las reglas de periodicidad se almacenan en el código PHP, no en archivos de configuración del sistema.
- Flexibilidad — se puede cambiar dinámicamente la programación, pausar tareas y registrar la ejecución.
- Integración — se integra fácilmente en frameworks (Laravel, Symfony) y ORM.
Instalación
Instálelo a través de Composer:
composer require dragonmantank/cron-expressionEsta es la biblioteca básica para trabajar con expresiones cron. Para un planificador completo, a menudo se usa peppeocchi/php-cron-scheduler:
composer require peppeocchi/php-cron-schedulerFunciones principales
- Análisis de expresiones cron — verifica si la hora actual coincide con el patrón (
* * * * *). - Multitarea — ejecución de múltiples tareas en un solo proceso.
- Paralelismo — a través de
exec()opcntl_fork(). - Registro — salida de stdout/stderr a un archivo.
- Manejo de errores — reintentos, notificaciones.
Ejemplo de código
<?phprequire 'vendor/autoload.php';
use GO\\Scheduler;
$scheduler = new Scheduler();
// Tarea: cada minuto$scheduler->call(function() { echo "Ejecutándose a las " . date('Y-m-d H:i:s') . "";})->everyMinute();
// Tarea: cada hora a los 30 minutos$scheduler->call('cleanup_logs')->at('30 * * * *');
// Tarea: días laborables a las 9:00$scheduler->exec('php artisan report:generate')->at('0 9 * * 1-5');
// Ejecución de todas las tareas listas$scheduler->run();Cuándo usarlo
El planificador de tareas PHP es ideal para:
- envío de correos electrónicos masivos programados;
- limpieza de datos obsoletos (logs, sesiones);
- generación de informes en horas de baja actividad;
- sincronización con APIs externas (una vez por hora);
- actualización de caché (cada 5 minutos).
No reemplace el cron del sistema para operaciones críticas del sistema (copia de seguridad de BD, actualización de certificados) — úselo como una capa adicional para la lógica de negocio.
También en la biblioteca
Trabajo con Markdown en Kotlin: bibliotecas, análisis y generación
Exposed para Kotlin: guía completa con ejemplos
WireMock.Net para C# (.NET): guía completa con ejemplos