Tutorial di code di Laravel

Tutorial di code di Laravel
La coda di Laravel è una delle caratteristiche più utili del framework Laravel. Questa funzione viene utilizzata per aspettare compiti che richiedono tempo ed eseguono attività in un secondo momento per migliorare le prestazioni e l'efficienza dell'applicazione Laravel. Questa funzione fornisce diversi tipi di code nei back-end, come Amazon SQS, Redis, Beanstalk, Driver sincrono o Database relazionale. Un driver di coda nulla viene utilizzato per scartare i lavori in coda. Il file di configurazione della coda è archiviato nella posizione configurazione/coda.PHP. Un esempio comune di utilizzo della coda di Laravel è inviare e -mail. Quando è richiesto di gestire un gran numero di e -mail nell'applicazione Laraval, è meglio utilizzare le code di Laravel per accelerare l'elaborazione. Questo tutorial mostra come utilizzare le code di Laravel per inviare un gran numero di e -mail.

Prerequisiti

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

  1. Installa un nuovo progetto Laravel
  2. Imposta la connessione del database
  3. Imposta la configurazione per l'invio delle e -mail (è possibile controllare l'e -mail di invio del tutorial per inviare e -mail tramite SMTP)

Crea tabella

Devi creare il lavori Tabella nel database per archiviare tutte le code. Eseguire il comando seguente dal terminale per creare il file di migrazione per il lavori tavolo.

$ php coda artigianale: tavolo

È possibile aprire il file di migrazione dalla posizione database/migrazioni/. Il file contiene il seguente contenuto.

Usa illuminate \ database \ migrations \ migration;
Usa illuminate \ database \ Schema \ Blueprint;
Usa illuminare \ Support \ Facedes \ Schema;
Classe CreateJobStable estende la migrazione

/**
* Esegui le migrazioni.
*
* @return void
*/
funzione pubblica up ()

Schema :: create ('Jobs', function (Blueprint $ table)
$ table-> bigincrements ('id');
$ table-> string ('coda')-> indice ();
$ table-> longtext ('payload');
$ table-> UnsignedInyInteger ('tentativi');
$ table-> unsignedInteger ('riserved_at')-> nulllable ();
$ table-> unsignedInteger ('Disponit_at');
$ table-> unsignedInteger ('created_at');
);

/**
* Invertire le migrazioni.
*
* @return void
*/
funzione pubblica down ()

Schema :: Dropifexists ('Jobs');

Eseguire il comando seguente dal terminale per creare il lavoro tavolo.

$ PHP Artisan Migrate

Crea la classe di posta

È necessario creare una classe postale per inviare e -mail dall'applicazione Laravel. Esegui il comando seguente per creare la classe di posta denominata Invia una email Nella posizione app/posta.

$ PHP Artisan Make: Mail Sendemail

Il contenuto di questa classe è mostrato di seguito. Il file file di visualizzazione utilizzato in costruire() Il metodo verrà creato nella prossima parte di questo tutorial.

Appspace App \ Mail;
Usa illuminare \ bus \ queueable;
Usa illuminare \ contratti \ queue \ dovrebbequeue;
Usa Illuminate \ Mail \ Mailable;
utilizzare illuminate \ queue \ serializesModels;
SENDEMAIL CLASSE ESTENDA IL MAILABILE

Usa queeable, serializza model;
/**
* Crea una nuova istanza di messaggio.
*
* @return void
*/
funzione pubblica __construct ()

//

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

/ * Definire il nome di visualizzazione che verrà utilizzato per il modello di posta elettronica */
restituisce $ this-> view ('email');

Crea vista

Crea il file di visualizzazione denominato e-mail.lama.PHP con i seguenti contenuti che verranno inviati come corpo e -mail.

Benvenuto in Linux Sint


Impara facilmente Laravel

Crea una classe di lavoro

Esegui il comando seguente per creare una classe di lavoro. Il nome file di classe di lavoro nominato Email di invio.PHP verrà creato nella posizione app/lavori.

$ PHP Artisan Make: lavoro di invio di lavoro

Il contenuto del Email di invio.PHP è mostrato di seguito. È necessario impostare un indirizzo email valido all'interno del A() metodo del maniglia() funzione per verificare se il codice funziona correttamente. Imposta l'indirizzo e -mail valido al posto di 'Indirizzo e -mail del ricevitore' dentro il A() metodo per verificare se la coda funziona correttamente.

appspace app \ jobs;
Usa illuminare \ bus \ queueable;
Usa illuminare \ contratti \ queue \ dovrebbequeue;
Usa Illuminate \ Foundation \ Bus \ Dispatchable;
Usa illuminate \ queue \ interactSwithQueue;
utilizzare illuminate \ queue \ serializesModels;
/ * Aggiunto i pacchetti necessari */
Usa la posta;
Usa l'app \ Mail \ Sendemail;
Classe SendingEmail implements dovrebbe avere

Usa spedire, interactwithQueue, inchable, serializza modi;
/**
* Crea una nuova istanza di lavoro.
*
* @return void
*/
funzione pubblica __construct ()

//

/**
* Eseguire il lavoro.
*
* @return void
*/
Handled -Handle ()

/ * Crea l'oggetto della classe postale e invia email */
$ email = new SendeMail ();
/ * Imposta un indirizzo email valido */
Mail :: a ('Ricevitore e-mail')-> Invia ($ e-mail);

Crea controller

Esegui il comando seguente per creare un controller per gestire la coda. Quando il manubrio () La funzione del controller viene eseguita, il lavoro in coda verrà spinta e l'e -mail invierà.

$ PHP Artisan Make: Controller SendemailController

SendEmailController.PHP

APPPACE NAME \ HTTP \ Controller;
Usa Illuminate \ http \ richiesta;
/ * Aggiungi i pacchetti necessari */
Utilizzare l'app \ jobs \ sendingemail;
Usa carbonio \ carbon;
Classe SendEmailController estende il controller

/**
* Usando le code di Laravel
*/
Funzione pubblica Handlequeue ()

/ * Spingi il nuovo lavoro nella coda del lavoro */
dispatch (new sendingemail ());
/ * Stampa Messaggio dopo l'invio di e -mail */
echo "e -mail è stata inviata";

Aggiungi il percorso

Apri il ragnatela.PHP file da itinerari cartella e aggiungere il seguente percorso per eseguire il lavoro in coda utilizzando il controller.

Route :: get ('email', 'sendemailcontroller@handlequeue');

Esegui il seguente URL nel browser per verificare se il codice funziona. Apri l'indirizzo e -mail del ricevitore per verificare se è stata ricevuta una nuova e -mail.

http: // localhost: 8000/emailqueue

Aggiungi ritardo

Apri il Email di invio.PHP file di nuovo e modifica il contenuto di manubrio () funzione per aggiungere il ritardo di cinque secondi ai lavori in coda.

APPPACE NAME \ HTTP \ Controller;
Usa Illuminate \ http \ richiesta;
/ * Aggiungi i pacchetti necessari */
Utilizzare l'app \ jobs \ sendingemail;
Usa carbonio \ carbon;
Classe SendEmailController estende il controller

/**
* Usando le code di Laravel
*/
Funzione pubblica Handlequeue ()

/ * Crea un nuovo oggetto coda con ritardo di 5 secondi */
$ emailJob = (new SendingEmail ())-> ritardo (carbon :: now ()-> addSeconds (5));
/ * Spingi il nuovo lavoro nella coda del lavoro */
Dispatch ($ emailJob);
/ * Stampa Messaggio dopo l'invio di e -mail */
echo "e -mail inviata dopo cinque secondi";

Ancora una volta, eseguire il seguente URL nel browser per verificare se il codice funziona. Qui, l'e -mail verrà inviata dopo cinque secondi, utilizzando il metodo Delay () di cinque secondi.

http: // localhost: 8000/emailqueue

Controlla la posta in arrivo dell'indirizzo e -mail del ricevitore per scoprire se una nuova e -mail è stata ricevuta dopo 5 secondi. Verrà ricevuta un'e -mail con i seguenti contenuti se il lavoro in coda funziona correttamente.

Conclusione

Questo tutorial mostra un uso molto semplice della coda di Laravel. È possibile utilizzare le code di Laravel per vari scopi, in base ai requisiti dell'applicazione. Spero che questo tutorial abbia aiutato i lettori a comprendere meglio i concetti di base delle code di Laravel.