Tareas programadas en Laravel 5

arrow_back Blog

Si no estamos trabajando con Laravel y queremos programar tareas cada X tiempo de forma automática en un servidor deberemos programar para cada una de ellas un Cron, algo que se puede volver muy pesado y complejo de mantener.

En cambio en Laravel la cosa se vuelve mucho más sencilla gracias al Scheduler que viene ya preparado por defecto.

Para ejecutar tareas programadas con Laravel simplemente deberemos ejecutar el siguiente comando en nuestro servidor una única vez. * * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1 El comando anterior generará un Cron que se ejecutará cada minuto, y nosotros junto con Laravel podremos programar tantas tareas como queramos para que se ejecuten cada minuto, cada día o cada mes, y todo de forma sencilla.

Una de las mejores opciones para generar tareas programadas con Laravel es combinando esta funcionalidad con los comandos, así que vamos a aplicar este ejemplo, por lo tanto generemos un comando. php artisan make:command GenerateRandomUser Este comando habrá generado el archivo /app/Console/Commands/GenerateRandomUser.php, vamos a abrirlo y vamos a modificar su código por el siguiente.

Antes de nada vamos a fijarnos en las propiedades $signature y $description y a continuación ejecuta el siguiente comando en tu terminal. php artisan Veremos entre otros el siguiente nuevo comando disponible.

Sabiendo esto, lo único que nos queda por saber es que cuando ejecutemos el comando php artisan generator:random_user se ejecutará será el método handle, y en nuestro caso cómo puedes ver simplemente se creará un usuario de forma aleatoria, ¡ya sabemos crear comandos! Ejecutar comandos de forma programada con Laravel Ahora vamos a ver lo sencillo que es utilizar las tareas programadas con Laravel para que nuestro comando se ejecute cada minuto, para ello, vamos a abrir el archivo app/Console/Kernel.php y lo reemplazamos por el siguiente.

Por llamar a nuestro comando dentro del método schedule utilizando el método everyMinute Laravel será capaz de generar un usuario aleatorio cada minuto en nuestra base de datos.

Para terminar simplemente debes ejecutar en tu servidor el siguiente comando y todo estará funcionando. * * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1 Yo estoy trabajando en mi entorno local con MAC, para poder ejecutar el mismo comando sin la necesidad de crear un Cron lo que hago es ejecutar el siguiente comando que se ejecuta automáticamente cada 60 segundos y hace exactamente lo mismo. while true; do php artisan schedule:run; sleep 60; done

Cursosdesarrolloweb Cursosdesarrolloweb

Cursosdesarrolloweb es una plataforma educativa con cursos y tutoriales en texto y vídeo.

Términos y condiciones Política de privacidad Formulario de contacto

Copyright 2024 © Todos los derechos reservados.

Contacto