Planificador de tareas PHP

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es un planificador de tareas en PHP?

Un planificador de tareas (task scheduler) es una herramienta para automatizar la ejecución de operaciones repetitivas en aplicaciones PHP. A diferencia de CRON, que se gestiona a nivel de servidor, las bibliotecas para PHP permiten definir horarios de forma flexible directamente en el código del proyecto, integrando las tareas con la lógica de negocio (por ejemplo, envío de correos masivos, limpieza de caché, generación de informes).

¿Para qué sirve un planificador de tareas?

Sin un planificador, los desarrolladores se ven obligados a ejecutar scripts manualmente a través de CRON, lo que complica la gestión de dependencias y las pruebas. Un planificador de PHP resuelve estos problemas:

  • Flexibilidad: las tareas se pueden pausar o cambiar su frecuencia sin modificar archivos del sistema.
  • Registro (logging): mecanismos integrados para registrar errores y ejecuciones.
  • Colas: integración con RabbitMQ, Redis para tareas en segundo plano.
  • Pruebas: se pueden ejecutar tareas manualmente desde la consola o mediante tests.

Instalación

Un planificador popular es vlucas/phpdotenv (no confundir con dotenv) o cron-expression. Sin embargo, el más funcional es symfony/scheduler (de Symfony) o peppeocchi/php-cron-scheduler. Instalación a través de Composer:

composer require peppeocchi/php-cron-scheduler

Funciones principales

  • Soporte para expresiones CRON: */5 * * * * — cada 5 minutos.
  • Tareas únicas: con una hora de ejecución exacta.
  • Tareas condicionales: ejecución solo si se cumple una condición (por ejemplo, si un archivo existe).
  • Ejecución paralela: las tareas no se bloquean entre sí.
  • Manejo de errores: reintento automático en caso de fallo.

Ejemplo de código en PHP

require 'vendor/autoload.php';

use GO\\Scheduler;

$scheduler = new Scheduler();

// Tarea cada 10 minutos$scheduler->php('/ruta/al/script.php') ->everyMinute(10) ->output('/tmp/output.log');

// Tarea con expresión CRON$scheduler->call(function() { echo "Enviando email...";})->cron('0 9 * * 1'); // Cada lunes a las 9 am

// Tarea condicional$scheduler->php('/ruta/al/reporte.php') ->daily() ->when(function() { return file_exists('/tmp/flag.txt'); });

$scheduler->run();

¿Cuándo usarlo?

El planificador es ideal para:

  • Limpieza periódica de archivos temporales o de la base de datos.
  • Envío de notificaciones push programadas.
  • Actualización de datos agregados (por ejemplo, clasificaciones).
  • Integración con APIs externas (scraping, sincronización).

Evite usar el planificador para tareas que requieran ejecución inmediata; para eso son más adecuadas las colas (por ejemplo, RabbitMQ o Redis).

Conclusión

El planificador de tareas en PHP es una herramienta potente para automatizar tareas rutinarias. Es especialmente útil en proyectos donde las entradas CRON en el servidor son incómodas o requieren cambios frecuentes. La instalación a través de Composer toma un minuto, y las opciones de configuración flexibles permiten adaptar el horario a cualquier proceso de negocio.

Recommendations