En este artículo, veremos una de las características interesantes de la programación de tareas y marcos web de Laravel. A lo largo de este artículo, veremos cómo Laravel le permite administrar las tareas programadas en su aplicación. Además, también terminaremos creando nuestras propias tareas programadas personalizadas para fines de demostración..
El marco Laravel te permite configurar tareas programadas para que no tengas que preocuparte por configurarlas a nivel del sistema. Puede deshacerse de esa compleja sintaxis cron al configurar tareas programadas ya que Laravel le permite definirlas de una manera fácil para el usuario.
Comenzaremos el artículo sobre cómo está acostumbrado a configurar los trabajos cron tradicionales y, a continuación, exploraremos la forma de Laravel de lograrlo. En la segunda mitad del artículo, lo intentaremos creando un par de tareas programadas personalizadas que deberían proporcionar una visión práctica del tema..
En el desarrollo diario de su aplicación, a menudo se enfrenta a una situación que requiere que ejecute ciertos scripts o comandos periódicamente. Si está trabajando con el sistema * nix, es probable que sepa que los trabajos cron 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 del trabajo cron basado en * nix.
* / 5 * * * * /web/statistics.sh
Bastante simple-ejecuta el estadísticas.sh
archivar cada cinco minutos!
Aunque ese fue un caso de uso bastante simple, a menudo te encuentras en una situación que requiere que implementes casos de uso más complejos. Por otro lado, un sistema complejo requiere que defina varios trabajos cron 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.
Entonces, como puede ver, hay muchas cosas por ahí esperando para ejecutarse periódicamente y también en diferentes intervalos de tiempo. Si usted es un administrador de sistemas experimentado, es una tarea fácil para usted definir los trabajos cron para todas estas tareas, pero a veces nosotros, como desarrolladores, deseamos que haya una manera más fácil de evitar.
Por suerte, Laravel viene con una función incorporada. Programación de tareas API que te permite definir tareas programadas como nunca antes. Y sí, la siguiente sección tiene que ver con eso: lo básico de la programación de tareas de Laravel.
En la sección anterior, pasamos por la forma tradicional de configurar trabajos cron. En esta sección, veremos los detalles de Laravel en el contexto de la API de programación de tareas.
Antes de seguir adelante, lo importante es comprender que la función de programación provista por Laravel es como cualquier otra función 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.
De hecho, lo primero que debe hacer si desea utilizar el sistema de programación Laravel es configurar el trabajo cron que se ejecuta cada minuto y llama al comando de artesano que se muestra en el siguiente fragmento de código..
* * * * * php / path-to-your-project / artisan schedule: ejecuta >> / dev / null 2> & 1
El comando artesanal anterior llama al programador Laravel, y eso a su vez ejecuta todos los trabajos cron pendientes definidos en su aplicación.
Por supuesto, todavía no hemos visto cómo definir las tareas programadas en su aplicación Laravel, y eso es lo siguiente en lo que nos sumergiremos..
Es el programar
método de la App \ Console \ Kernel
clase que necesita utilizar si desea definir tareas programadas específicas de la aplicación.
Sigue adelante y agarra el contenido de la app / Console / Kernel.php
expediente.
comando ('inspire') -> hourly ();
Como puede ver, el código del núcleo en sí proporciona un ejemplo útil. En el ejemplo anterior, Laravel ejecuta el inspirar
Comando artesanal por hora. ¿No crees que la sintaxis es tan intuitiva en primer lugar??
De hecho, hay un par de formas diferentes en las que Laravel le permite definir tareas de programación:
Además, hay muchas frecuencias de programación integradas que puedes elegir:
De hecho, diría que proporciona un conjunto completo de rutinas para que nunca tenga que tocar el shell para crear sus trabajos cron personalizados.!
Sí, puedo decir que está ansioso por saber cómo implementar sus tareas programadas personalizadas, y eso es lo que también prometí al principio del artículo.
Como comentamos, hay diferentes maneras en que Laravel le permite definir tareas programadas. Revisemos cada uno para entender cómo funciona..
La API de programación proporciona la llamada
Método que le permite ejecutar una función invocable o de cierre. Revisemos el app / Console / Kernel.php
archivo con el siguiente código.
call (function () $ posts = DB :: table ('posts') -> select ('user_id', DB :: raw ('count (*) as total_posts')) -> groupBy ('user_id') - > get (); foreach ($ publica como $ post) DB :: table ('users_statistics') -> where ('user_id', $ post-> user_id) -> update (['total_posts' => $ post- > total_posts]);) -> everyThirtyMinutes ();
Como puede ver, hemos pasado la función de cierre como el primer argumento de llamada
método. Además, hemos establecido la frecuencia a 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.
Además de los cierres o reclamaciones, también puede programar un comando artesanal 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 de los códigos y reutilización al mismo tiempo..
Anímate y revisa los contenidos de la app / Console / Kernel.php
archivo con el siguiente.
comando ('estadísticas: usuario') -> everyThirtyMinutes (); / ** * Registre los comandos basados en el cierre para la aplicación. * * @return void * / protected function command () require base_path ('route / console.php');
Es el mando
método que le gustaría usar si desea programar un comando artesanal como se muestra en el fragmento de código anterior. Debe pasar la firma del comando artesanal como el primer argumento del mando
método.
Por supuesto, también debe definir el comando artesanal correspondiente en app / Console / Commands / UserStatistics.php
.
select ('user_id', DB :: raw ('count (*) as total_posts')) -> groupBy ('user_id') -> get (); // actualizar la tabla de estadísticas para cada ($ publicaciones como $ publicaciones) DB :: table ('users_statistics') -> where ('user_id', $ post-> user_id) -> update (['total_posts' => $ post- > total_posts]);
Podríamos decir que los métodos que hemos analizado hasta ahora eran específicos de la aplicación Laravel. Además, Laravel también le permite programar los comandos de shell para que también pueda ejecutar aplicaciones externas.
Veamos un ejemplo rápido que muestra cómo realizar una copia de seguridad de su base de datos todos los días..
exec ("mysqldump -h $ host -u $ username -p $ password $ database") -> daily () -> sendOutputTo ('/ backups / daily_backup.sql');
Es evidente a partir del código que necesita utilizar el exec
método del planificador, y debe pasar el comando que desea ejecutar como su primer argumento.
Aparte de eso, también hemos usado el enviar salida
Método que te permite recopilar la salida del comando. Por otro lado, hay un método., emailOutputTo
, que le permite enviar por correo electrónico los contenidos de salida!
Y eso nos lleva al final del artículo. De hecho, solo hemos arañado la superficie de la API de programación de Laravel, y tiene mucho que ofrecer en su kitty..
Hoy pasamos por la API de programación de tareas en el marco web de Laravel. Fue fascinante ver con qué facilidad le permite administrar las tareas que deben ejecutarse periódicamente.
Al principio del artículo, discutimos la forma tradicional de configurar las tareas programadas y, a continuación, presentamos la forma Laravel de hacerlo. En la segunda mitad del artículo, analizamos 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 al configurar las tareas programadas en Laravel. Para aquellos de ustedes que ya están comenzando con Laravel o que desean ampliar sus conocimientos, sitio o aplicación con extensiones, tenemos una variedad de cosas que puede estudiar en Envato Market..
En caso de que aparezca algo en tu mente, comencemos una conversación utilizando la siguiente información!