Uso de Cron Schedule en Laravel para automatizar tareas
Cron job es útil para automatizar nuestra tarea en el momento especificado en intervalos regulares. Laravel incluye una función para la programación de tareas que hace que la programación cron sea muy fácil. En el pasado, necesitábamos agregar una entrada separada para cada trabajo cron. En Laravel, solo necesitamos agregar un comando y ejecuta todos nuestros trabajos cron automáticamente. No es necesario agregar una entrada separada para cada tarea. En este artículo, estudiamos el uso del programa cron en Laravel que nos ayuda a automatizar nuestras tareas.
¿Por qué necesitamos ejecutar Cron?
Hay varios ejemplos que podemos mencionar en los que necesitamos ejecutar un cron. Es posible que tenga una tienda en línea y desee enviar ofertas promocionales a sus usuarios. O tiene un sitio web de membresía y necesita enviar el correo electrónico de recordatorio a los usuarios sobre su período de renovación de suscripción. Estos son los dos ejemplos en los que podemos usar cron. Lo que hacemos es escribir un programa que pueda realizar esta tarea y configurar un cron para ello. Su servidor buscará la hora especificada para cron y cuando llegue esa hora, ejecutará automáticamente el programa. No necesitamos mirar el reloj y ejecutar el programa manualmente.
Este proceso nos facilita la vida. Podemos concentrarnos en nuestras otras cosas importantes e invertir tiempo en algo sabio.
Cron Schedule en Laravel
Para nuestro artículo, tomemos un ejemplo del mundo real. Digamos que tenemos un montón de usuarios en nuestra base de datos de Laravel. Cada medianoche debemos enviar un correo electrónico a todos los usuarios describiendo nuestra nueva oferta promocional. Al hacerlo, nuestros usuarios reciben notificaciones sobre nuevas ofertas y sus ventas pueden recibir más atención.
Suponemos que almacenó toda la información de su usuario en la tabla ‘usuarios’. Recibiremos los correos electrónicos de los usuarios de esta tabla y les enviaremos un correo electrónico. Por supuesto, necesitamos escribir un código de manera que deba ejecutarse cada medianoche.
Abra el app/Console/Kernel.php
archivo en su editor y agregue el modelo de usuario y la fachada de correo al archivo.
<?php
namespace AppConsole;
use IlluminateConsoleSchedulingSchedule;
use IlluminateFoundationConsoleKernel as ConsoleKernel;
use AppUser; // User model
use Mail; // Mail Facade
class Kernel extends ConsoleKernel
{
....
Kernal
La clase tiene un método schedule
en el que tenemos que escribir uno o varios horarios. Como necesitamos enviar un correo electrónico a nuestros usuarios, escribimos el código de la siguiente manera.
<?php
namespace AppConsole;
use IlluminateConsoleSchedulingSchedule;
use IlluminateFoundationConsoleKernel as ConsoleKernel;
use AppUser;
use Mail;
class Kernel extends ConsoleKernel
{
....
/**
* Define the application's command schedule.
*
* @param IlluminateConsoleSchedulingSchedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->call(function() {
$arr_users = User::all();
if(count($arr_users) > 0) {
foreach ($arr_users as $user) {
$name = $user->name;
$email = $user->email;
$data = array("name" => $name, "body" => "This is our new promotional offer");
Mail::send('emails.mail', $data, function($message) use ($name, $email) {
$message->to($email, $name)
->subject('New Offer Launched');
$message->from('[email protected]', 'Artisans Web');
});
}
}
})->daily();
// tou can add more schedules here
}
....
En el código anterior, tomamos a los usuarios de la base de datos y les enviamos un correo electrónico utilizando el método de envío de la fachada Mail. Aquí necesitamos crear mail.blade.php
archivos en el resources/views/emails
directorio.
mail.blade.php
Hi <strong>{{ $name }}</strong>,
<p>{{ $body }}</p>
Como nuestra tarea es enviar un correo electrónico a la medianoche, usamos el daily()
método. Laravel proporciona diferentes opciones de frecuencia de programación que obtendría en la página de documentación.
Agregue una entrada cron a su servidor
Finalmente, para configurar este trabajo cron en un servidor, debe agregar la siguiente entrada cron a su servidor.
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
Asegúrese de haber establecido correctamente la ruta de su proyecto. Este Cron llamará al programador de comandos de Laravel cada minuto. Ejecuta automáticamente el programa: ejecutar el comando y evaluar sus tareas programadas y ejecuta las tareas que deben realizarse.
Esperamos que haya aprendido a usar la programación cron en Laravel y a automatizar sus tareas. Nos gustaría conocer su opinión en la sección de comentarios a continuación.
Artículos relacionados
- Envío de correo electrónico a través del servidor SMTP de Gmail en Laravel
- Cómo usar eventos y oyentes de Laravel en su aplicación
- Cómo usar Laravel Passport para la autenticación de API REST