Con la llegada de Laravel 11, la gestión del programador de tareas (Task Scheduling) se ha simplificado aún más. Ahora, puedes definir todas las tareas programadas directamente en el archivo routes/console.php utilizando la clase Schedule. Esto elimina la necesidad de editar el kernel de consola, haciendo que el flujo de trabajo sea más limpio y centralizado.
Ejemplo Básico: Ejecutar un Comando en un Intervalo de Horas
Supongamos que deseas ejecutar un comando cada minuto, pero únicamente entre las 10:00 y las 18:00. Con Laravel 11, puedes definirlo de la siguiente manera:
Explicación
Schedule::command()
Especifica el comando de Artisan que deseas ejecutar.everyMinute()
Define la frecuencia de ejecución de la tarea.between('10:00', '18:00')
Restringe la ejecución de la tarea al intervalo de tiempo especificado.
Con esta configuración, el comando micomando se ejecutará cada minuto, pero solo durante el rango de tiempo establecido.
Definiendo Tareas Personalizadas
Además de ejecutar comandos Artisan, puedes programar la ejecución de métodos o cierres directamente:
Ejemplo con un Método:
Este ejemplo registra un mensaje en los logs cada hora, pero únicamente entre las 08:00 y las 12:00.
Ejemplo con Tareas Externas:
Puedes ejecutar scripts o comandos del sistema utilizando exec:
Esto ejecuta el comando php artisan optimize todos los días a las 2:00 AM.
Configuraciones Avanzadas
El programador de tareas de Laravel permite una gran flexibilidad. Aquí tienes algunos ejemplos adicionales:
Condicionar la Ejecución con when y skip:
when(): Ejecuta la tarea solo si la condición es verdadera (en este caso, los fines de semana).skip(): Omite la tarea si la condición es verdadera (en este caso, en entornos locales).
Ejemplo Complejo con Múltiples Tareas:
report:daily: Se ejecuta diariamente a las 08:00.backup:db: Se ejecuta dos veces al día, a la 1:00 AM y a la 1:00 PM.Tarea de mantenimiento: Se ejecuta todos los domingos a las 22:00.
Pruebas y Verificación
Para verificar las tareas configuradas, puedes usar el comando:
sail artisan schedule:listEste comando muestra una lista detallada de todas las tareas programadas, junto con sus horarios y restricciones.
Ejecución en Producción
Para que las tareas programadas se ejecuten correctamente en producción, agrega la siguiente línea al cron de tu servidor:
* * * * * php /ruta/a/tu/proyecto/artisan schedule:run >> /dev/null 2>&1Esto ejecutará el programador de tareas cada minuto, evaluando todas las condiciones definidas en routes/console.php.
Conclusión
Con Laravel 11, la gestión de tareas programadas es más sencilla, intuitiva y centralizada gracias al uso de la clase Schedule en el archivo routes/console.php. Ya sea que necesites ejecutar comandos de Artisan, scripts personalizados o métodos específicos, esta herramienta ofrece una solución flexible y fácil de implementar.
¿Listo para simplificar la planificación de tareas en tus proyectos? ¡Aprovecha las nuevas características y lleva tu flujo de trabajo al siguiente nivel! 🚀
¡No te pierdas nuestro curso Aplicación de reservas basadas en franjas horarias con Laravel 11!
Curso Laravel 12
Completo 2026
El único curso 100% actualizado que incluye Laravel 12, Livewire 3, Vue 3, React 19 e Inertia 2. Aprende con proyectos reales y las últimas funcionalidades.
star Incluido en cualquier suscripción