laravel

Tutorial de filas do Laravel

Tutorial de filas do Laravel
A fila do Laravel é um dos recursos mais úteis do framework Laravel. Este recurso é usado para esperar por tarefas demoradas e executá-las posteriormente para melhorar o desempenho e eficiência do aplicativo Laravel. Este 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 em fila. O arquivo de configuração da fila é armazenado no local configuração / fila.php. Um exemplo comum de usar a fila do Laravel é enviar e-mails. Quando for necessário lidar com um grande número de emails no aplicativo Laraval, então é melhor usar as filas do Laravel para agilizar o processamento. Este tutorial mostra como usar as filas do Laravel para enviar um grande número de emails.

Pré-requisitos

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

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

Criar a tabela

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

$ php artisan queue: table

Você pode abrir o arquivo de migração no 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 Illuminate \ Support \ Facades \ Schema;
classe CreateJobsTable estende a migração

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

Schema :: create ('jobs', function (Blueprint $ table)
$ table-> bigIncrements ('id');
$ tabela-> string ('fila') -> índice ();
$ table-> longText ('payload');
$ table-> unsignedTinyInteger ('tentativas');
$ table-> unsignedInteger ('reserved_at') -> nullable ();
$ table-> unsignedInteger ('available_at');
$ table-> unsignedInteger ('created_at');
);

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

Schema :: dropIfExists ('jobs');

Execute o seguinte comando no terminal para criar o trabalho tabela.

$ php artisan migrate

Criar Mail Class

Você deve criar uma classe de correspondência para enviar e-mails do aplicativo Laravel. Execute o seguinte comando para criar a classe de correio chamada Enviar email na localização app / Mail.

$ php artisan make: mail SendEmail

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

namespace App \ Mail;
use Illuminate \ Bus \ Queueable;
use Illuminate \ Contracts \ Queue \ ShouldQueue;
use Illuminate \ Mail \ Mailable;
use Illuminate \ Queue \ SerializesModels;
classe SendEmail estende Mailable

use Queueable, SerializesModels;
/ **
* Crie uma nova instância de mensagem.
*
* @return void
* /
função pública __construct ()

//

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

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

Criar vista

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

Bem-vindo ao Linux Hint


Aprenda Laravel facilmente

Criar uma classe de trabalho

Execute o seguinte comando para criar uma classe de trabalho. O nome do arquivo da classe de trabalho chamado Enviando email.php será criado no local app / empregos.

$ php artisan make: job SendingEmail

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 com() 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 destinatário' dentro de para() método para verificar se a fila está funcionando corretamente.

namespace App \ Jobs;
use Illuminate \ Bus \ Queueable;
use Illuminate \ Contracts \ Queue \ ShouldQueue;
use Illuminate \ Foundation \ Bus \ Dispatchable;
use Illuminate \ Queue \ InteractsWithQueue;
use Illuminate \ Queue \ SerializesModels;
/ * Adicionados os pacotes necessários * /
use Mail;
use App \ Mail \ SendEmail;
classe SendingEmail implementa ShouldQueue

use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/ **
* Crie uma nova instância de trabalho.
*
* @return void
* /
função pública __construct ()

//

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

/ * Criar o objeto da classe mailable e enviar e-mail * /
$ email = novo SendEmail ();
/ * Defina um endereço de e-mail válido * /
Mail :: to ('Receiver Email Address') -> send ($ email);

Criar controlador

Execute o seguinte comando para criar um controlador para lidar com a fila. Quando o handleQueue () função do controlador é executada, o trabalho de fila será empurrado e o e-mail será enviado.

$ php artisan make: controlador SendEmailController

SendEmailController.php

namespace App \ Http \ Controllers;
use Illuminate \ Http \ Request;
/ * Adicione os pacotes necessários * /
use App \ Jobs \ SendingEmail;
use Carbon \ Carbon;
classe SendEmailController extends Controller

/ **
* Usando o Laravel Queues
* /
public function handleQueue ()

/ * Coloque o novo trabalho na fila de trabalho * /
despachar (novo SendingEmail ());
/ * Imprimir mensagem após enviar e-mail * /
echo 'Email foi enviado';

Adicionar Rota

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

Route :: get ('email', '[email protected]');

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

http: // localhost: 8000 / emailqueue

Adicionar Atraso

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

namespace App \ Http \ Controllers;
use Illuminate \ Http \ Request;
/ * Adicione os pacotes necessários * /
use App \ Jobs \ SendingEmail;
use Carbon \ Carbon;
classe SendEmailController extends Controller

/ **
* Usando o Laravel Queues
* /
public function handleQueue ()

/ * Cria um novo objeto de fila com 5 segundos de atraso * /
$ emailJob = (new SendingEmail ()) -> atraso (Carbon :: now () -> addSeconds (5));
/ * Coloque o novo trabalho na fila de trabalhos * /
despacho ($ emailJob);
/ * Imprimir mensagem após enviar e-mail * /
echo 'Email enviado após cinco segundos';

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

http: // localhost: 8000 / emailqueue

Verifique a caixa de entrada do endereço de e-mail do destinatário para saber se um novo e-mail 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 o uso muito simples da fila do Laravel. Você pode usar as filas do Laravel para vários fins, com base nos requisitos de sua aplicação. Espero que este tutorial tenha ajudado os leitores a entender melhor os conceitos básicos das filas do Laravel.

Como usar o AutoKey para automatizar jogos Linux
AutoKey é um utilitário de automação de desktop para Linux e X11, programado em Python 3, GTK e Qt. Usando sua funcionalidade de script e MACRO, você ...
Como mostrar o contador de FPS em jogos Linux
Os jogos Linux tiveram um grande impulso quando a Valve anunciou o suporte Linux para o cliente Steam e seus jogos em 2012. Desde então, muitos jogos ...
Como baixar e jogar Sid Meier's Civilization VI no Linux
Introdução ao jogo Civilization 6 é uma versão moderna do conceito clássico introduzido na série de jogos Age of Empires. A ideia era bastante simples...