Tutorial di Scheduler Laravel

Tutorial di Scheduler Laravel
Alcune attività sono necessarie per eseguire regolarmente in qualsiasi applicazione e sarebbe più efficiente se le attività potessero essere eseguite automaticamente. Il framework Laravel semplifica questi tipi di attività utilizzando Laravel Scheduler. L'invio di e-mail in blocco relative all'offerta, l'ottimizzazione dei dati, la generazione di report, il backup dell'applicazione e la rimozione di utenti inattivi sono alcuni esempi comuni delle attività ripetitive che possono essere eseguite con il programma di laravel. Laravel può eseguire periodicamente attività specifiche utilizzando un task manager integrato denominato Mais lavoro. Il file di configurazione denominato Corntab è usato da Mais Per gestire le attività di pianificazione. Questo tutorial ti mostra come gestire le attività ripetitive creando Mais Lavori ed eseguire la pianificazione delle attività.

Prerequisiti

Prima di iniziare questo tutorial, prima, completa i seguenti compiti:

  1. Crea un nuovo progetto Laravel
  2. Imposta la connessione del database
  3. Esegui il comando migra crea una tabella utente
  4. Imposta la configurazione per l'invio di e -mail (SMTP viene utilizzato qui per l'invio di e -mail.)

Implementare l'autenticazione predefinita

Innanzitutto, implementa il sistema di autenticazione utente predefinito di Laravel per completare l'attività di pianificazione mostrata in questo tutorial. Esegui i seguenti comandi dal terminale per implementare l'autenticazione Laravel predefinita usando VUE.

$ composir richiede laravel/interfaccia
$ php artisan ui vue -auth

Esegui il comando seguente per compilare il nuovo impalcatura per ottenere il contenuto aggiornato.

$ npm install && npm run dev

Esegui il comando seguente per cancellare la cache del percorso.

$ PHP Artisan Route: Clear

Esegui il seguente comando per avviare il server di sviluppo di Laravel e verificare se il sistema di autenticazione utente predefinito funziona.

$ PHP Artisan Serve

Apri qualsiasi browser ed esegui il seguente URL nel browser. Se la login E Registrati Il collegamento appare e funziona correttamente, quindi l'implementazione dell'autenticazione predefinita è stata completata correttamente.

http: // localhost: 8000

Crea una classe postale e un comando artigianale

Molti nuovi utenti creeranno account quotidianamente e eseguiranno molte attività relative agli utenti registrati quando il progetto è online. A volte, l'applicazione deve sapere quanti utenti hanno creato account ogni giorno. Se queste informazioni sono richieste regolarmente, allora è meglio eseguire una particolare domanda dopo un intervallo regolare. Un comando Laravel viene utilizzato qui per ottenere le informazioni degli utenti attualmente registrati e una classe postale viene utilizzata per inviare tali informazioni via e -mail all'amministratore o a una persona specificata.

Esegui il comando seguente per creare la classe Mailable per l'invio dell'email. Creerà un file denominato Senduserslist.PHP Nella posizione app/posta.

$ PHP Artisan Make: Mail SendusersList

Apri il file e modifica il contenuto, come nel codice seguente.

Appspace App \ Mail;
Usa illuminare \ bus \ queueable;
Usa illuminare \ contratti \ queue \ dovrebbequeue;
Usa Illuminate \ Mail \ Mailable;
utilizzare illuminate \ queue \ serializesModels;
Classe SendUSersList si estende Maillable

Usa queeable, serializza model;
/ * Dichiara una variabile di array */
pubblico $ userList = array ();
/**
* Crea una nuova istanza di messaggio.
*
* @return void
*/
Funzione pubblica __Construct ($ UserList)

/* Inizializza la variabile dell'array per la variabile passata da
Creazione di oggetti della classe. */
$ this-> userList = $ userList;

/**
* Crea il messaggio.
*
* @return $ this
*/
build pubblica ()

/ * Diaplay Il file di visualizzazione con i valori della variabile array */
restituisce $ this-> view ('RegisterList')-> With ('UserList', $ this-> UserList);

Esegui il comando seguente per creare il comando Laravel personalizzato denominato RegisterSersList, che eseguirà la query per ottenere l'elenco delle informazioni degli utenti registrati in ogni giorno. Il comando creerà un file denominato RegisterSersList.PHP Nella posizione app/comandi.

$ PHP Artisan Make: Command RegisterSersList --Command = Registrato: Utenti

Apri il file e modifica il contenuto con il seguente codice per inviare l'elenco degli utenti attualmente registrati del sistema corrente a un determinato indirizzo e -mail.

Namespace App \ Console \ Comandi;
utilizzare illuminate \ console \ comando;
/ * Importa pacchetti necessari */
Usa la posta;
Usa l'app \ Mail \ SendUSersList;
usare db;
Usa carbonio \ carbon;
Utilizzare l'app \ Console \ Comandi \ DateTime;
Classe RegisterSersList estende il comando

/**
* Il nome e la firma del comando console.
*
* stringa @var
*/
/ * Aggiungi valore firma */
protetto $ firma = 'registrato: utenti';
/**
* La descrizione del comando console.
*
* stringa @var
*/
Protetto $ Descrizione = "Elenco degli utenti registrati";
/**
* Crea una nuova istanza di comando.
*
* @return void
*/
funzione pubblica __construct ()

genitore :: __ costruct ();

/**
* Esegui il comando console.
*
* @return int
*/
Handled -Handle ()

/ * Leggi la data di sistema corrente */
$ oggi = carbon :: ora ()-> todateString ();
/* Ottieni l'elenco delle informazioni degli utenti registrate
Nella data del sistema corrente */
$ current_registered_users =
Db :: table ('utenti')-> dove ('creato_at', $ oggi)-> get ()-> toarray ();
/* Crea l'oggetto della classe postale con la variabile dell'array
che contiene l'elenco degli utenti attualmente registrati */
$ email = new SendUSersList ($ current_registered_users);
/ * Invia e -mail utilizzando la classe di posta */
Mail :: a ('Ricevitore e-mail')-> Invia ($ e-mail);

Imposta il programma per eseguire il comando

Apri il Kernel.PHP File dalla posizione app/console e modificare il contenuto con il seguente codice. È possibile impostare diversi tipi di opzioni di frequenza di pianificazione. Puoi ottenere l'elenco da questo link. Qui, viene utilizzato il programma orario.

APP SPACE NAME \ Console;
Usa illuminate \ console \ pianificazione \ programma;
Utilizzare Illuminate \ Foundation \ Console \ Kernel come Consolekernel;
Il kernel di classe estende il consolekernel

/**
* I comandi artigianali forniti dalla tua domanda.
*
* Array @var
*/
/ * INTILIZZA LA VARIABILE COMANDI $ */
Comandi $ $ protetti = [
'App \ console \ comandi \ registeruserslist',
];
/**
* Definire il programma dei comandi dell'applicazione.
*
* @param \ illuminate \ console \ Scheduling \ Schedule $ Pianifica
* @return void
*/
Pianificazione delle funzioni protette (programma $ programma)

/ * Imposta il programma orario */
$ pianificazione-> comando ('Registrato: utenti')-> hourly ();

/**
* Registra i comandi per l'applicazione.
*
* @return void
*/
Comandi di funzione protetti ()

$ this-> load (__ dir__.'/Comandi');
Richiedi base_path ('percorsi/console.php ');

Crea vista

Creare il Registerlist.lama.PHP Visualizza il file con il seguente codice.


@if (conteggio ($ userlist)> 0)

L'elenco degli utenti registrati oggi è riportato di seguito:


@foreach ($ userlist come $ utente)
$ user-> name

@Endforeach
@altro
Nessun utente è ancora registrato oggi.
@finisci se

Esegui il comando:

Esegui i seguenti comandi per cancellare la cache.

$ PHP Artisan Cache: Clear
$ php artisan config: cache

Esegui il seguente comando Artisan dal terminale per eseguire il comando personalizzato precedentemente creato e controllare l'output.

$ PHP Artisan Registrato: utenti

Controlla l'indirizzo e -mail del ricevitore per scoprire l'output. Verrà visualizzato il seguente output se non viene creato nessun utente.

Crea un nuovo account utente e controlla di nuovo l'email.

Conclusione

Lo scheduler di Laravel semplifica le attività ripetitive per l'applicazione. Dopo aver letto questo tutorial, i lettori dovrebbero ora avere una chiara comprensione dei concetti di creazione di comandi personalizzati e implementazione di attività automatizzate utilizzando Laravel Scheduler.