7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Laravel

Programación de Tareas en Laravel

Scroll to top
Read Time: 8 mins

Spanish (Español) translation by Rene Soto (you can also view the original English article)

En este artículo, analizaremos una de las características más interesantes de la programación de tareas de framework web de Laravel.  A lo largo de este artículo, veremos cómo Laravel le permite administrar las tareas programadas en tu aplicación. Además, también terminaremos creando nuestras propias tareas programadas personalizadas con fines de demostración

El marco de Laravel te permite configurar tareas programadas para que no tenga que preocuparse por configurarlas a nivel del sistema. Puede deshacerse de esa compleja sintaxis cron al configurar tareas programadas, ya que Laravel te permite definirlas de una manera fácil de usar. 

Comenzaremos el artículo explicando cómo estás acostumbrado a configurar los cron jobs tradicionales y, a continuación, exploraremos la forma de lograrlo de Laravel. En la segunda mitad del artículo, lo intentaremos creando algunas tareas programadas personalizadas que deberían proporcionar una visión práctica del tema. 

Configuración Tradicional de Tareas Programadas

En tu desarrollo diario de aplicaciones, a menudo te enfrenta situaciónes que requiere la ejecución periódica de determinados scripts o comandos.  Si estás trabajando con el sistema *nix, probablemente sepas que los cron jobs manejan estos comandos. Por otro lado, se conocen como tareas programadas en sistemas basados en Windows. 

Echemos un vistazo rápido a un ejemplo simple de un cron job basado en *nix. 

Muy simple: ¡ejecuta el archivo statistics.sh cada cinco minutos!

Aunque se trata de un caso de uso bastante simple, a menudo te encuentras en una situación que requiere la implementación de casos de uso más complejos. Por otro lado, un sistema complejo requiere que defina múltiples cron jobs que se ejecutan en diferentes intervalos de tiempo. 

Veamos algunas tareas que una aplicación web compleja debe realizar periódicamente en el back-end. 

  • Limpiar los datos innecesarios del back-end de la base de datos. 
  • Actualizar los índices de almacenamiento en caché del front-end para mantenerlo actualizado. 
  • Calcular las estadísticas del sitio.
  • Enviar correos electrónicos. 
  • Realizar una copia de seguridad de diferentes elementos del sitio. 
  • Generar informes
  •  Y más.

Entonces, como puedes ver, hay muchas cosas esperando que se ejecuten periódicamente y también en diferentes intervalos de tiempo. Si tu eres un administrador de sistemas con experiencia, sería  pan comido definir los cron jobs para todas estas tareas, pero a veces nosotros, como desarrolladores, deseamos que haya una forma más fácil. 

Afortunadamente, Laravel viene con una API de programación de tareas incorporada que te permite definir tareas programadas como nunca antes. Y sí, la siguiente sección trata sobre eso: los principios básicos de la programación de tareas de Laravel.

La Manera Laravel

En la sección anterior, pasamos por la forma tradicional de configurar cron jobs. En esta sección, veremos los detalles de Laravel en el contexto de la API de programación de tareas.

Antes de continuar, lo importante es comprender que la función de programación proporcionada por Laravel es como cualquier otra característica y no se invocará automáticamente. Entonces, si estás pensando que no necesitas hacer nada a nivel del sistema, entonces no tienes suerte, diría yo. 

De hecho, lo primero que debes hacer si deseas utilizar el sistema de programación Laravel es configurar el cron job que se ejecuta cada minuto y llama al comando artisan que se muestra en el siguiente fragmento.

El comando artisan anterior llama al programador Laravel y, a su vez, ejecuta todos los trabajos cron pendientes definidos en su aplicación. 

Por supuesto, todavía tenemos que ver cómo definir las tareas programadas en su aplicación Laravel, y eso es lo siguiente que profundizaremos. 

Es el método schedule de la clase App\Console\Kernel que debes usar si deseas definir tareas programadas específicas de la aplicación. 

Continúa y toma el contenido de app/Console/Kernel.php.

Como puedes ver, el código central en sí proporciona un ejemplo útil. En el ejemplo anterior, Laravel ejecuta el comando de artisan inspire cada hora. ¿No crees que la sintaxis es tan intuitiva en primer lugar?

De hecho, hay algunas maneras diferentes en que Laravel te permite definir tareas de programación:

  • Use el closure /callable.
  • Llamar al comando artisan.
  • Ejecute el comando de shell.

Además, hay muchas frecuencias de programación incorporadas entre las que puede elegir:

  • cada minuto / cada cinco minutos
  • por hora / diario / semanal / trimestral / anual
  • en un momento específico del día
  • y muchos más

De hecho, diría que proporciona un conjunto completo de rutinas para que nunca tenga que tocar el caparazón para crear sus cron jobs personalizados.

Sí, puedo decir que estás ansioso por saber cómo implementar tus tareas programadas personalizadas, y eso es lo que también prometí al comienzo del artículo.

Crea tu Primera Tarea Programada en Laravel

Como comentamos, hay diferentes maneras en que Laravel te permite definir tareas programadas. Repasemos cada uno para entender cómo funciona.

El Método de Closure / Callable

La API de programación proporciona el método call que te permite ejecutar una función invocable o de cierre. Revisemos el archivo de la app/Console/Kernel.php con el siguiente código.

Como puedes ver, pasamos la función de cierre como primer argumento del método call. Además, hemos establecido la frecuencia cada 30 minutos, por lo que ejecutará la función de cierre cada 30 minutos.

En nuestro ejemplo, contamos el total de publicaciones por usuario y actualizamos la tabla de estadísticas en consecuencia.

El Comando Artisan

Además de los closures o callables, también puedes programar un comando artisan que se ejecutará en ciertos intervalos. De hecho, ese debería ser el enfoque preferido sobre los cierres, ya que proporciona una mejor organización del código y reutilización al mismo tiempo.

Continúa y revisa el contenido del archivo app/Console/ Kernel.php con lo siguiente.

Es el método command que le gustaría usar si deseas programar un comando artisan como se muestra en el fragmento de código anterior. Debes pasar la firma de comando artisan como primer argumento del método command.

Por supuesto, también debes definir el comando artisan correspondiente en app/Console/Commands/UserStatistics.php.

El Comando Exec 

Podríamos decir que los métodos que hemos discutido hasta ahora eran específicos de la aplicación Laravel en sí misma. Además, Laravel también te permite programar los comandos shell para que también puedas ejecutar aplicaciones externas. 

Veamos un ejemplo rápido que demuestra cómo realizar una copia de seguridad de su base de datos todos los días.

Es evidente del código que necesita utilizar el método exec del planificador, y debe pasar el comando que le gustaría ejecutar como su primer argumento.

Aparte de eso, también usamos el método sendOutputTo que te permite recolectar la salida del comando. Por otro lado, hay un método, emailOutputTo, que te permite enviar por correo electrónico los contenidos de salida.

Y eso nos lleva al final del artículo. De hecho, acabamos de arañar la superficie de Laravel Scheduling API, y tiene mucho que ofrecer en su kit.

Conclusión

Hoy, revisamos la API de programación de tareas en el marco web de Laravel. Fue fascinante ver cuán fácil te permite administrar tareas que deben ejecutarse periódicamente.

Al comienzo del artículo, discutimos la forma tradicional de configurar las tareas programadas, y luego presentamos la forma de hacerlo de Laravel. En la segunda mitad del artículo, revisamos un par de ejemplos prácticos para demostrar los conceptos de programación de tareas.

Espero que hayas disfrutado el artículo y que te sientas más seguro acerca de la configuración de las tareas programadas en Laravel. Para aquellos de ustedes que recién están empezando con Laravel o buscando ampliar su conocimiento, sitio o aplicación con extensiones, tenemos una variedad de cosas que pueden estudiar en Envato Market.

Si surge algo en tu mente, comencemos una conversación usando los comentarios abajo.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.