Tutorial de filas de Laravel

Tutorial de filas de Laravel
A fila de Laravel é uma das características mais úteis da estrutura do Laravel. Esse recurso é usado para aguardar tarefas demoradas e executar tarefas posteriormente para melhorar o desempenho e a eficiência do aplicativo Laravel. Esse recurso fornece diferentes tipos de filas em back-ends, como Amazon Sqs, Redis, Beanstalk, Driver Síncrono ou Banco de Dados Relacional. Um driver de fila nula é usado para descartar trabalhos na fila. O arquivo de configuração da fila é armazenado no local Config/fila.php. Um exemplo comum de usar a fila de Laravel é enviar e -mails. Quando é necessário lidar com um grande número de e -mails no aplicativo Laraval, é melhor usar filas de Laravel para acelerar o processamento. Este tutorial mostra como usar as filas de Laravel para enviar um grande número de e -mails.

Pré -requisitos

Antes de iniciar este tutorial, primeiro, conclua as seguintes tarefas:

  1. Instale um novo projeto de Laravel
  2. Configure a conexão do banco de dados
  3. Configure a configuração para enviar os e -mails (você pode verificar o tutorial de envio de e -mail para enviar email usando SMTP)

Criar a tabela

Você deve criar o empregos tabela no banco de dados para armazenar todas as filas. Execute o seguinte comando do terminal para criar o arquivo de migração para o empregos mesa.

$ php artesan fila: tabela

Você pode abrir o arquivo de migração do local banco de dados/migrações/. O arquivo contém o seguinte conteúdo.

Use Illuminate \ Database \ Migrations \ Migration;
Use Illuminate \ Database \ Schema \ Blueprint;
use iluminado \ support \ fachades \ schema;
CLASSE CREATEJOBSTABLE Estende a migração

/**
* Execute as migrações.
*
* @return void
*/
função pública up ()

Schema :: Create ('Jobs', function (Blueprint $ tabela)
$ tabela-> biginCrements ('id');
$ tabela-> string ('fila')-> index ();
$ tabela-> longText ('Payload');
$ tabela-> UnsignedTinyInteger ('Tentativas');
$ tabela-> UnsignEdInteger ('Reservado_at')-> Nullable ();
$ tabela-> UnsignedInteger ('disponível_at');
$ tabela-> UnsignEdInteger ('criou_at');
);

/**
* Reverter as migrações.
*
* @return void
*/
função pública para baixo ()

Schema :: Dropifexists ('Jobs');

Execute o seguinte comando do terminal para criar o trabalho mesa.

$ php artesan migrar

Crie aula de correio

Você deve criar uma classe por correio para enviar e -mails do aplicativo Laravel. Execute o seguinte comando para criar a classe de correio nomeada Enviar email no local App/Mail.

$ PHP Artisan Make: Mail SendEmail

O conteúdo desta classe é mostrado abaixo. O nome do arquivo de vista que é usado no construir() o método será criado na próxima parte deste tutorial.

namespace app \ Mail;
use iluminado \ barramento \ queueable;
use iluminado \ contratos \ fila \ devequim;
Use iluminado \ Mail \ Mailable;
use iluminado \ fila \ serializaModels;
Classe sendEmail estende por correio

use models de modos em ruínas;
/**
* Crie uma nova instância de mensagem.
*
* @return void
*/
Função pública __construct ()

//

/**
* Construa a mensagem.
*
* @return $ this
*/
função pública Build ()

/ * Defina o nome da visualização que será usado para o modelo de email */
retornar $ this-> View ('email');

Criar visualização

Crie o arquivo de exibição nomeado e-mail.lâmina.php com o seguinte conteúdo que será enviado como o corpo de e -mail.

Bem -vindo à dica do Linux


Aprenda Laravel facilmente

Crie uma aula de emprego

Execute o seguinte comando para criar uma aula de emprego. O nome do arquivo da classe de trabalho nomeado Enviando email.php será criado no local aplicativo/emprego.

$ PHP Artisan Make: Job Seatingemail

O conteúdo do Enviando email.php é mostrado abaixo. Você deve definir um endereço de e -mail válido dentro do para() Método do lidar() função para testar se o código está funcionando corretamente. Defina o endereço de e -mail válido no lugar de 'Endereço de e -mail do receptor' dentro de para() método para verificar se a fila está funcionando corretamente.

namespace app \ jobs;
use iluminado \ barramento \ queueable;
use iluminado \ contratos \ fila \ devequim;
Use Illuminate \ Foundation \ Bus \ Dispathable;
use iluminado \ fila \ interraeacSwithQueue;
use iluminado \ fila \ serializaModels;
/ * Adicionado os pacotes necessários */
use email;
Use App \ Mail \ SendEmail;
Aula de envio de correio de implementos deve ser

use despacho, interraeswithqueue, queueable, serializa models;
/**
* Crie uma nova instância de emprego.
*
* @return void
*/
Função pública __construct ()

//

/**
* Executar o trabalho.
*
* @return void
*/
Handle de função pública ()

/ * Crie o objeto de classe e envie email */
$ email = new sendEmail ();
/ * Defina um endereço de email válido */
Mail :: para ('Endereço de e-mail do receptor')-> Send ($ email);

Criar controlador

Execute o seguinte comando para criar um controlador para lidar com a fila. Quando o HandleQueue () Função do controlador é executado, o trabalho da fila será pressionado e o email enviará.

$ php artesan make: controller sendemailcontroller

SendEmailController.php

namespace app \ http \ controladores;
use iluminado \ http \ request;
/ * Adicione os pacotes necessários */
Use App \ Jobs \ SendingEmail;
Use carbono \ carbono;
Classe sendEmailcontroller estende o controlador

/**
* Usando filas de Laravel
*/
Função pública HandleQueue ()

/ * Empurre o novo emprego na fila de emprego */
expedição (novo sendingemail ());
/ * Imprimir mensagem depois de enviar email */
eco 'e -mail foi enviado';

Adicionar rota

Abra o rede.php arquivo do rotas Pasta e adicione a seguinte rota para executar o trabalho da fila usando o controlador.

Route :: get ('email', 'sendEmailcontroller@handleQueue');

Execute o seguinte URL no navegador para verificar se o código está funcionando. Abra o endereço de e -mail do receptor para verificar se um novo email foi recebido.

http: // localhost: 8000/emailqueue

Adicione atraso

Abra o Enviando email.php Arquive novamente e modifique o conteúdo do HandleQueue () função para adicionar o atraso de cinco segundos aos trabalhos da fila.

namespace app \ http \ controladores;
use iluminado \ http \ request;
/ * Adicione os pacotes necessários */
Use App \ Jobs \ SendingEmail;
Use carbono \ carbono;
Classe sendEmailcontroller estende o controlador

/**
* Usando filas de Laravel
*/
Função pública HandleQueue ()

/ * Crie um novo objeto de fila com atraso de 5 segundos */
$ emailjob = (novo sendingEMAIL ())-> atraso (carbono :: agora ()-> addSegunds (5));
/ * Empurre o novo emprego na fila de emprego */
despacho ($ emailjob);
/ * Imprimir mensagem depois de enviar email */
eco 'e -mail enviado após cinco segundos';

Novamente, execute o seguinte URL no navegador para verificar se o código está funcionando. Aqui, o email será enviado após cinco segundos, usando o método de atraso () de cinco segundos.

http: // localhost: 8000/emailqueue

Verifique a caixa de entrada do endereço de e -mail do receptor para descobrir se um novo email foi recebido após 5 segundos. Um e -mail com o seguinte conteúdo será recebido se o trabalho da fila estiver funcionando corretamente.

Conclusão

Este tutorial mostra um uso muito simples da fila de Laravel. Você pode usar filas de Laravel para vários fins, com base nos requisitos de seu aplicativo. Espero que este tutorial tenha ajudado os leitores a entender melhor os conceitos básicos de filas de Laravel.