![Programa una tarea en Laravel](https://notasweb.me/wp-content/uploads/2024/02/74c68fba-95f5-431f-a3ac-a8eabada8b34.webp)
Laravel ofrece una herramienta poderosa llamada Task Scheduling que permite automatizar tareas dentro de tus proyectos. Este tutorial cubre cómo puedes configurar y automatizar tareas, como enviar correos electrónicos diarios, en tres pasos esenciales.
CREACIÓN COMANDO
Paso 1: Crear el comando
php artisan make:command RegisteredVisits --command=registered:visits
El comando anterior creará una clase llamada RegisteredVisits en un archivo con el mismo nombre en la carpeta app/Console/Commands. Al ejecutar el comando Artisan, también le hemos dado un nombre al comando que ejecutará la tarea.
Paso 2: Modificamos el archivo creado
Entramos al archivo que hemos creado en la ruta «app/Console/Commands/RegisteredVisits.php» y modificamos la descripción del comando:
Paso 3: Registramos el comando
Accedemos al archivo «app/Console/Kernel.php» y registramos nuestro archivo:
Si ejecutamos el comando «php artisan list» desde la terminal, deberíamos poder ver el comando registrado en el listado, más en concreto en registered.
Paso 4: Creamos el código
Dentro del archivo RegisteredVisits, creamos la consulta que nos dará las visitas diarias.
CONFIGURACIÓN MAIL
Paso 1: Crear clase Mailable para el envío de email
php artisan make:mail SendMail
Esto creará el archivo dentro de app/Mail/SendMail.php .
Dentro del archivo, creamos una propiedad $visitis, y la inicializamos en el constructor con el parámetro $visits que pasamos al instanciar la clase SandMail. Por último, enviamos los datos desde el método build a la vista.
En mi caso, yo dentro de resources\views tengo creada una carpeta mails, y ahí dentro voy creando las plantillas de correo que voy generando. En este caso la ruta sería :
resources\views\mails\daily-visits.blade.php
Paso 2: Configurar el contenido del correo
En este caso, como es un reporte propio solo voy a incluir un titulo, un par de párrafos y una tabla
Paso 3: Registramos el mail
Accedemos al fichero «app/Console/Commands/RegisteredVisits.php» y agregamos la clase
use Illuminate\Support\Facades\Mail;
use App\Mail\SendMail;
Y en el método handler lo completamos así:
PROGRAMACIÓN DEL COMANDO
Como la tarea la ejecutaremos una vez al día, usaremos el método «daily()». Para eso debemos registrarlo en el archivo «app/Console/Kernel.php» dentro de la función schedule.
Al método daily() se ejecutará a medianoche. Si quisiéramos que se ejecutará la tarea una vez al día pero en otra hora distinta, habría que usar el método dailyAt pasándole un parámetro de tipo string, con la hora en la que queremos que se ejecute. Ejemplo: ->dailyAt(’13:00′) .
Si quieres saber más sobre los tramos que existen, aquí te dejo el enlace a la documentación de scheduling de Laravel.
Finalmente, desde la consola de comandos de nuestro servidor, ejecutamos el siguiente comando
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
Si lo quieres probar en local (localhost), debes escribir el siguiente comando:
php artisan schedule:run
Si quieres ver si funciona en el momento, puedes cambiar el método daily por everyMinute, así podrás ver si has configurado todo el proceso correctamente. Quedando algo así:
Con estos pasos, has configurado Laravel para automatizar tareas, como enviar un reporte diario de visitas, mejorando la eficiencia de tu aplicación. Laravel Task Scheduling es una herramienta flexible que puede adaptarse a cualquier necesidad de automatización.
Nota: Recuerda configurar correctamente el crontab en tu servidor para que Laravel ejecute el scheduler como está previsto.
Si esta guía te ha sido útil, no dudes en compartirla y ayudar a otros desarrolladores a descubrir el poder de la programación de tareas en Laravel. Y si tienes trucos propios o quieres compartir tu experiencia con la programación de tareas en Laravel, déjanos un comentario o síguenos en nuestras redes sociales. ¡Juntos podemos construir aplicaciones más inteligentes y eficientes! 😉 👍
![](http://notasweb.me/wp-content/uploads/2024/02/ivan-portillo_avatar-96x96-1.webp)
Desarrollador de software con más de 7 años de experiencia, especializado en desarrollo web y backend. Con habilidades demostradas en PHP, Laravel, Symfony, y una amplia gama de tecnologías modernas. Apasionado por el diseño y desarrollo de software.
Buenisimo. Muchas gracias por la info.
Gracias Pablo por tus comentarios!