laravel

Tutorial de colas de Laravel

Tutorial de colas de Laravel
La cola de Laravel es una de las características más útiles del marco de Laravel. Esta función se utiliza para esperar las tareas que requieren mucho tiempo y realizar tareas en un momento posterior para mejorar el rendimiento y la eficiencia de la aplicación Laravel. Esta función proporciona diferentes tipos de colas en back-end, como Amazon SQS, Redis, Beanstalk, controlador síncrono o base de datos relacional. Se utiliza un controlador de cola nula para descartar trabajos en cola. El archivo de configuración de la cola se almacena en la ubicación config / queue.php. Un ejemplo común del uso de la cola de Laravel es enviar correos electrónicos. Cuando se requiere tratar con una gran cantidad de correos electrónicos en la aplicación Laraval, entonces es mejor usar las colas de Laravel para acelerar el procesamiento. Este tutorial muestra cómo usar las colas de Laravel para enviar una gran cantidad de correos electrónicos.

Prerrequisitos

Antes de comenzar este tutorial, primero, complete las siguientes tareas:

  1. Instalar un nuevo proyecto de Laravel
  2. Configurar la conexión a la base de datos
  3. Configure la configuración para enviar los correos electrónicos (puede consultar el tutorial de envío de correos electrónicos para enviar correos electrónicos usando SMTP)

Crear mesa

Debes crear el trabajos tabla en la base de datos para almacenar todas las colas. Ejecute el siguiente comando desde la terminal para crear el archivo de migración para el trabajos mesa.

$ php artisan queue: tabla

Puede abrir el archivo de migración desde la ubicación base de datos / migraciones /. El archivo contiene el siguiente contenido.

use Illuminate \ Database \ Migrations \ Migration;
use Illuminate \ Database \ Schema \ Blueprint;
use Illuminate \ Support \ Facades \ Schema;
class CreateJobsTable extiende la migración

/ **
* Ejecutar las migraciones.
*
* @return void
* /
función pública arriba ()

Schema :: create ('trabajos', function (Blueprint $ table)
$ tabla-> bigIncrements ('id');
$ tabla-> cadena ('cola') -> índice ();
$ tabla-> longText ('carga útil');
$ tabla-> unsignedTinyInteger ('intentos');
$ tabla-> unsignedInteger ('reservado_at') -> nullable ();
$ tabla-> unsignedInteger ('disponible_en');
$ tabla-> unsignedInteger ('creado_en');
);

/ **
* Revertir las migraciones.
*
* @return void
* /
función pública abajo ()

Schema :: dropIfExists ('trabajos');

Ejecute el siguiente comando desde la terminal para crear el trabajo mesa.

$ php migrar artesanal

Crear clase de correo

Debes crear una clase que se pueda enviar por correo para enviar correos electrónicos desde la aplicación Laravel. Ejecute el siguiente comando para crear la clase de correo denominada Enviar correo electrónico en el lugar aplicación / correo.

$ php artisan make: mail SendEmail

El contenido de esta clase se muestra a continuación. El nombre de archivo de la vista que se utiliza en el construir() El método se creará en la siguiente parte de este tutorial.

espacio de nombres App \ Mail;
use Illuminate \ Bus \ Queueable;
use Illuminate \ Contracts \ Queue \ ShouldQueue;
use Illuminate \ Mail \ Mailable;
use Illuminate \ Queue \ SerializesModels;
clase SendEmail extiende Mailable

use Queueable, SerializesModels;
/ **
* Crear una nueva instancia de mensaje.
*
* @return void
* /
función pública __construct ()

//

/ **
* Construye el mensaje.
*
* @return $ esto
* /
función pública build ()

/ * Defina el nombre de la vista que se usará para la plantilla de correo electrónico * /
return $ this-> view ('correo electrónico');

Crear vista

Crea el archivo de vista llamado Email.espada.php con el siguiente contenido que se enviará como cuerpo del correo electrónico.

Bienvenido a Linux Hint


Aprende Laravel fácilmente

Crear una clase de trabajo

Ejecute el siguiente comando para crear una clase de trabajo. El nombre de archivo de la clase de trabajo llamado EnviandoEmail.php se creará en la ubicación aplicación / trabajos.

$ php artisan make: job SendingEmail

El contenido de la EnviandoEmail.php se muestra a continuación. Debe establecer una dirección de correo electrónico válida dentro del a() método del resolver() función para probar si el código está funcionando correctamente. Establezca la dirección de correo electrónico válida en lugar de 'Dirección de correo electrónico del destinatario' dentro de a() método para comprobar si la cola está funcionando correctamente.

espacio de nombres App \ Jobs;
use Illuminate \ Bus \ Queueable;
use Illuminate \ Contracts \ Queue \ ShouldQueue;
use Illuminate \ Foundation \ Bus \ Dispatchable;
use Illuminate \ Queue \ InteractsWithQueue;
use Illuminate \ Queue \ SerializesModels;
/ * Añadidos los paquetes necesarios * /
usar correo;
use App \ Mail \ SendEmail;
clase SendingEmail implementa ShouldQueue

use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/ **
* Crear una nueva instancia de trabajo.
*
* @return void
* /
función pública __construct ()

//

/ **
* Ejecuta el trabajo.
*
* @return void
* /
identificador de función pública ()

/ * Crea el objeto de la clase mailable y envía un correo electrónico * /
$ email = new SendEmail ();
/ * Establecer una dirección de correo electrónico válida * /
Correo :: a ('Dirección de correo electrónico del destinatario') -> enviar ($ correo electrónico);

Crear controlador

Ejecute el siguiente comando para crear un controlador para manejar la cola. Cuando el handleQueue () se ejecuta la función del controlador, el trabajo en cola se enviará y el correo electrónico se enviará.

$ php artisan make: controlador SendEmailController

SendEmailController.php

espacio de nombres App \ Http \ Controllers;
use Illuminate \ Http \ Request;
/ * Agrega los paquetes necesarios * /
use App \ Jobs \ SendingEmail;
use Carbon \ Carbon;
clase SendEmailController extiende Controller

/ **
* Uso de colas de Laravel
* /
función pública handleQueue ()

/ * Empuje el nuevo trabajo en la cola de trabajos * /
despacho (nuevo SendingEmail ());
/ * Imprimir mensaje después de enviar correo electrónico * /
echo 'El correo electrónico ha sido enviado';

Agregar ruta

Abre el web.php archivo de la rutas carpeta y agregue la siguiente ruta para ejecutar el trabajo de cola usando el controlador.

Route :: get ('correo electrónico', '[correo electrónico protegido]');

Ejecute la siguiente URL en el navegador para verificar si el código está funcionando. Abra la dirección de correo electrónico del destinatario para comprobar si se ha recibido un nuevo correo electrónico.

http: // localhost: 8000 / emailqueue

Agregar retraso

Abre el EnviandoEmail.php archivo de nuevo y modificar el contenido del handleQueue () función para agregar el retraso de cinco segundos a los trabajos en cola.

espacio de nombres App \ Http \ Controllers;
use Illuminate \ Http \ Request;
/ * Agrega los paquetes necesarios * /
use App \ Jobs \ SendingEmail;
use Carbon \ Carbon;
clase SendEmailController extiende Controller

/ **
* Uso de colas de Laravel
* /
función pública handleQueue ()

/ * Crea un nuevo objeto de cola con un retraso de 5 segundos * /
$ emailJob = (new SendingEmail ()) -> delay (Carbon :: ahora () -> addSeconds (5));
/ * Empuje el nuevo trabajo en la cola de trabajos * /
despacho ($ emailJob);
/ * Imprimir mensaje después de enviar correo electrónico * /
echo 'Correo electrónico enviado después de cinco segundos';

Nuevamente, ejecute la siguiente URL en el navegador para verificar si el código está funcionando. Aquí, el correo electrónico se enviará después de cinco segundos, utilizando el método delay () de cinco segundos.

http: // localhost: 8000 / emailqueue

Verifique la bandeja de entrada de la dirección de correo electrónico del destinatario para averiguar si se ha recibido un nuevo correo electrónico después de 5 segundos. Se recibirá un correo electrónico con el siguiente contenido si el trabajo en cola funciona correctamente.

Conclusión

Este tutorial muestra un uso muy simple de la cola de Laravel. Puede usar las colas de Laravel para varios propósitos, según los requisitos de su aplicación. Espero que este tutorial haya ayudado a los lectores a comprender mejor los conceptos básicos de las colas de Laravel.

WinMouse le permite personalizar y mejorar el movimiento del puntero del mouse en una PC con Windows
Si desea mejorar las funciones predeterminadas del puntero del mouse, use el software gratuito WinMouse. Agrega más funciones para ayudarlo a aprovech...
El botón de clic izquierdo del mouse no funciona en Windows 10
Si está utilizando un mouse dedicado con su computadora portátil o computadora de escritorio, pero el el botón izquierdo del mouse no funciona en Wind...
El cursor salta o se mueve aleatoriamente mientras escribe en Windows 10
Si descubre que el cursor del mouse salta o se mueve por sí solo, automáticamente, de manera aleatoria mientras escribe en una computadora portátil o ...