¿Cómo automatizar trabajos repetitivos en Laravel? 4 pasos
Guadalupe
17 Feb 2023
¿Quieres aprender Laravel como un profesional? ¡Entonces, este tema es para ti! Muchas personas buscan automatizar sus tareas repetitivas para ahorrar tiempo y esfuerzo. Sin embargo, para lograr esto se debe seguir una serie de pasos. ¿Te gustaría saber cuáles son? A continuación, te explicamos cómo automatizar tus trabajos repetitivos en Laravel, ¡empecemos!
Paso #1: Crear un comando de consola Artisan
Un comando de consola Artisan es como un interruptor que puedes presionar siempre que quieras que Laravel comience a realizar una tarea específica. Por ejemplo, puedes activar el interruptor para iniciar tu tarea, y esto puede hacerse de diferentes maneras.
Una forma es escribir el comando Artisan en la línea de comandos de tu consola. Otra forma es incluir el comando dentro del código de tu aplicación para que tu tarea se ejecute en una fecha y hora específicas.
Aquí hay algo bueno. ¡Puedes utilizar un comando Artisan para crear otro! Para crear tu nuevo comando, utiliza el comando make:de Artisan suministrado por Laravel. Por ejemplo, esto es útil para proyectos de seguimiento de proyectos y actualización de base de datos. Pero primero, se necesita un comando que inicie este trabajo, así que ingresa lo siguiente:
php artisan make:command LoadApiData
Laravel entonces genera la siguiente clase, llamada LoadApiData, y la coloca en la carpeta app/Console/Commands.
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class LoadApiData extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'command:name';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
//
}
}
La clase generada por Laravel no está completa. La terminamos rellenando las propiedades signature y description de la clase, así como el método handle(). La firma se utilizará para ejecutar nuestro comando. Cuando la escribamos en la consola, el comando se ejecutará.
protected $signature = 'app:load_api_data';
La descripción debe ser muy breve, solo unas pocas palabras que se muestran en la consola cada vez que listamos los comandos. El método handle() es llamado cuando el comando es ejecutado. En este caso, se usará esta función para iniciar el trabajo que se necesita hacer.
Te puede interesar: Laravel tips: 5 errores comunes que debes evitar
Paso #2: Crear un trabajo
A continuación, se necesita un proyecto que hará el trabajo pesado y realizará las tareas que queremos lograr. Este trabajo será iniciado por el comando que acabamos de construir. Una vez más podemos utilizar un comando Artisan para generar una clase esqueleto que nos ayudará a empezar. En la línea de comandos escribe lo siguiente:
php artisan make:job LoadApiDataJob
Laravel entonces genera la siguiente clase, llamada LoadApiDataJob, y la coloca en la carpeta app/Jobs. Cuando se llame a la tarea, se ejecutará el método handle(), por lo que la lógica para completar nuestra tarea automatizada se sitúa en esta función.
Paso #3: Programar la tarea
Una vez que hemos determinado que la lógica está funcionando según lo planeado, se puede programar la tarea para que se ejecute cuando queramos. Esto se realiza dentro de la clase app/Console/Kernel.php.
Una vez más se usa la firma de comando que se definió en el paso 1 cuando construimos la clase LoadApiData. Para actualizar una base de datos en Laravel tres veces al día, a las 2:00, a las 10:00 y a las 18:30, se podría modificar la función schedule() en Kernel.php **** para que se vea así.
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->command('app:load_api_data')->dailyAt('2:00');
$schedule->command('app:load_api_data')->dailyAt('10:00');
$schedule->command('app:load_api_data')->dailyAt('18:30');
}
Te puede interesar: Aprende cómo optimizar imágenes en Laravel
Paso #4: Actualizar la tabla cron del servidor
Los servidores tipo Unix contienen una utilidad de software llamada cron que se utiliza para programar trabajos. El uso de cron puede ser una tarea difícil y propensa a errores, pero Laravel ha encontrado una manera de simplificar el proceso, por lo que solo tienes que tener la más mínima interacción con la utilidad.
Para su aplicación, solo tiene que añadir una entrada a la tabla cron, y siempre es la misma entrada para cualquier aplicación Laravel. Esta entrada le dirá a tu servidor que llame al programador de Laravel cada minuto de cada día. Entonces, en lugar de cron, Laravel puede asumir la responsabilidad de mantener un registro de lo que debe ejecutarse como se describe en el paso 3.
Estos fueron los pasos para automatizar tus trabajos en tu aplicación de Laravel. Entonces, anímate a probarlo y agilizar tus proyectos. ¡Esperamos que esta información te haya sido de ayuda!
¿Te gustaría aprender a programar? En Coders Free contamos con diversos cursos online con todos los niveles de programación, así como servicios de diseño gráfico para hacer crecer tu negocio. ¡Contáctanos para obtener más información!