Tutorial do Scheduler do Laravel

Tutorial do Scheduler do Laravel
Algumas tarefas são necessárias para executar regularmente em qualquer aplicação e seria mais eficiente se as tarefas pudessem ser realizadas automaticamente. A estrutura do Laravel facilita esses tipos de tarefas usando o Scheduler do Laravel. Enviando e-mails a granel relacionados a ofertas, otimizando dados, gerando relatórios, mantendo o backup de aplicativos e removendo usuários inativos são alguns exemplos comuns das tarefas repetitivas que podem ser executadas com o agendador de Laravel. O Laravel pode executar tarefas específicas periodicamente usando um gerente de tarefas embutido nomeado Milho trabalho. O arquivo de configuração nomeado Corntab é usado por Milho Para gerenciar tarefas de agendamento. Este tutorial mostra como gerenciar tarefas repetitivas criando Milho empregos e execução de agendamento de tarefas.

Pré -requisitos

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

  1. Crie um novo projeto de Laravel
  2. Configure a conexão do banco de dados
  3. Execute o comando migrate Crie uma tabela de usuários
  4. Configure a configuração para enviar e -mails (o SMTP é usado aqui para enviar e -mails.)

Implementar autenticação padrão

Primeiro, implemente o sistema de autenticação de usuário padrão do Laravel para concluir a tarefa de agendamento mostrada neste tutorial. Execute os seguintes comandos do terminal para implementar a autenticação padrão de Laravel usando o VUE.

$ compositor requer Laravel/ui
$ php artesan ui vue -auth

Execute o seguinte comando para compilar o novo andaime para obter o conteúdo atualizado.

$ npm install && npm run dev

Execute o seguinte comando para limpar o cache da rota.

$ php Artisan Route: Clear

Execute o seguinte comando para iniciar o servidor de desenvolvimento do Laravel e verifique se o sistema de autenticação do usuário padrão está funcionando.

$ php artesan servir

Abra qualquer navegador e execute o seguinte URL no navegador. Se o Conecte-se e registro O link aparece e funciona corretamente, então a implementação da autenticação padrão foi concluída corretamente.

http: // localhost: 8000

Crie uma classe e comando artesanal e correio

Muitos novos usuários criarão contas diariamente e executarão muitas tarefas relacionadas a usuários registrados quando o projeto estiver online. Às vezes, o aplicativo precisa saber quantos usuários criaram contas todos os dias. Se essas informações forem necessárias regularmente, é melhor executar uma consulta específica após um intervalo regular. Um comando de Laravel é usado aqui para obter as informações dos usuários atualmente registrados e uma classe enviável é usada para enviar essas informações por e -mail para o administrador ou uma pessoa especificada.

Execute o seguinte comando para criar a classe e -mails para enviar o email. Ele criará um arquivo chamado SendUsersList.php no local App/Mail.

$ PHP Artisan Make: Mail SendusersList

Abra o arquivo e modifique o conteúdo, como no código a seguir.

namespace app \ Mail;
use iluminado \ barramento \ queueable;
use iluminado \ contratos \ fila \ devequim;
Use iluminado \ Mail \ Mailable;
use iluminado \ fila \ serializaModels;
A classe sendUsersList estende por correio

use models de modos em ruínas;
/ * Declare uma variável de matriz */
public $ userList = Array ();
/**
* Crie uma nova instância de mensagem.
*
* @return void
*/
Função pública __construct ($ userlist)

/* Inicialize a variável de matriz pela variável passada pelo
criação de objetos da classe. */
$ this-> userlist = $ userlist;

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

/ * Diaplay o arquivo de exibição com os valores da variável de matriz */
Retorne $ this-> View ('RegisteredList')-> com ('UserList', $ this-> UserList);

Execute o seguinte comando para criar o comando Laravel personalizado nomeado RegisterUsersList, que executará a consulta para obter a lista de informações dos usuários registrados em cada dia. O comando criará um arquivo nomeado RegisterUsersList.php no local App/Comandos.

$ PHP Artisan Make: Command RegisterUsersList -command = Registrado: Usuários

Abra o arquivo e modifique o conteúdo com o código a seguir para enviar a lista de usuários atualmente registrados do sistema atual para um determinado endereço de e -mail.

namespace app \ console \ comandos;
use iluminado \ console \ comando;
/ * Importar pacotes necessários */
use email;
Use App \ Mail \ SendusersList;
use db;
Use carbono \ carbono;
use app \ console \ comandos \ datetime;
Classe RegisterUsersList estende o comando

/**
* O nome e assinatura do comando do console.
*
* @var string
*/
/ * Adicione valor de assinatura */
$ Signature protegido = 'Registrado: Usuários';
/**
* A descrição do comando do console.
*
* @var string
*/
$ protegido $ description = 'Lista de usuários registrados';
/**
* Crie uma nova instância de comando.
*
* @return void
*/
Função pública __construct ()

pai :: __ construct ();

/**
* Executar o comando do console.
*
* @return int
*/
Handle de função pública ()

/ * Leia a data atual do sistema */
$ Today = carbon :: agora ()-> TodAstring ();
/* Obtenha a lista de informações dos usuários que estão registrados
Na data atual do sistema */
$ current_registered_users =
Db :: tabela ('usuários')-> wheredate ('creted_at', $ Today)-> get ()-> TOARRAY ();
/* Crie o objeto da classe e -mails com a variável de matriz
que contém a lista de usuários atualmente registrados */
$ email = new SendusersList ($ current_registered_users);
/ * Envie email usando a classe de email */
Mail :: para ('Endereço de e-mail do receptor')-> Send ($ email);

Configure o cronograma para executar o comando

Abra o Núcleo.php arquivo do local aplicativo/console e modificar o conteúdo com o seguinte código. Você pode definir diferentes tipos de opções de frequência de cronograma. Você pode obter a lista deste link. Aqui, a programação horária é usada.

namespace app \ console;
use iluminado \ console \ scheduling \ cronograma;
Use Illuminate \ Foundation \ Console \ Kernel como consolekernel;
Kernel de classe estende o consolekernel

/**
* Os comandos artesanais fornecidos pelo seu aplicativo.
*
* Array @var
*/
/ * Intialize a variável $ comandos */
comandos $ protegidos = [
'App \ Console \ Commands \ RegisterUsersList',
];
/**
* Defina o cronograma de comando do aplicativo.
*
* @param \ iluminate \ console \ agendamento \ cronograma $ cronograma
* @return void
*/
Cronograma de função protegida (programação $ cronograma)

/ * Defina o cronograma a cada hora */
$ cronograma-> command ('registrado: usuários')-> hourly ();

/**
* Registre os comandos do aplicativo.
*
* @return void
*/
Comandos de função protegida ()

$ this-> load (__ dir__.'/Comandos');
requer base_path ('rotas/console.php ');

Criar visualização

Crie o RegisterList.lâmina.php Exibir o arquivo com o seguinte código.


@if (contagem ($ userlist)> 0)

A lista de usuários registrados hoje são fornecidos abaixo:


@foreach ($ userlist como $ user)
$ user-> nome

@endForEach
@outro
Nenhum usuário está registrado hoje ainda.
@fim se

Execute o comando:

Execute os seguintes comandos para limpar o cache.

$ php artesan cache: claro
$ php artesan config: cache

Execute o seguinte comando artesão do terminal para executar o comando personalizado criado anteriormente e verifique a saída.

$ php artesan registrado: usuários

Verifique o endereço de e -mail do receptor para descobrir a saída. A saída a seguir aparecerá se nenhum usuário for criado.

Crie uma nova conta de usuário e verifique o email novamente.

Conclusão

O Scheduler do Laravel facilita a execução repetitiva para o aplicativo. Depois de ler este tutorial, os leitores agora devem ter um entendimento claro dos conceitos de criação de comandos personalizados e implementando tarefas automatizadas usando o Scheduler do Laravel.