Pré-requisitos
Antes de iniciar este tutorial, primeiro, conclua as seguintes tarefas:
- Instale um novo projeto Laravel
- Configure a conexão do banco de dados
- 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: tableVocê 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 migrateCriar 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 SendEmailO 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 SendingEmailO 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 SendEmailControllerSendEmailController.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.