Prerequisiti
Prima di iniziare questo tutorial, completare le seguenti attività:
- Installa un nuovo progetto Laravel
- Configurare la connessione al database
- Imposta la configurazione per l'invio delle email (puoi controllare il tutorial sull'invio di email per inviare email tramite SMTP)
Crea tabella
Devi creare il lavori tabella nel database per memorizzare tutte le code. Eseguire il seguente comando dal terminale per creare il file di migrazione per il lavori tavolo.
$ php coda artigiano:tabellaPuoi aprire il file di migrazione dalla posizione database/migrazioni/. Il file contiene il seguente contenuto.
usa Illumina\Database\Migrations\Migration;usa Illuminate\Database\Schema\Blueprint;
usa Illumina\Support\Facades\Schema;
class CreateJobsTable estende la migrazione
/**
* Esegui le migrazioni.
*
* @return void
*/
funzione pubblica su()
Schema::create('jobs', function (Blueprint $table)
$table->bigIncrements('id');
$table->string('queue')->index();
$table->longText('carico utile');
$table->unsignedTinyInteger('tentativi');
$table->unsignedInteger('reserved_at')->nullable();
$table->unsignedInteger('available_at');
$table->unsignedInteger('created_at');
);
/**
* Invertire le migrazioni.
*
* @return void
*/
funzione pubblica giù()
Schema::dropIfExists('jobs');
Esegui il seguente comando dal terminale per creare il lavoro tavolo.
$ php artigiano migrareCrea classe di posta
Devi creare una classe inviabile per posta per inviare e-mail dall'applicazione Laravel. Esegui il seguente comando per creare la classe di posta denominata Invia una email nella posizione app/posta.
$ php artigiano make:mail SendEmailIl contenuto di questa classe è mostrato di seguito. Il nome del file della vista utilizzato nel costruire() il metodo verrà creato nella parte successiva di questo tutorial.
spazio dei nomi App\Mail;usa Illumina\Bus\Queueable;
usa Illumina\Contracts\Queue\ShouldQueue;
usa Illumina\Mail\Mailable;
usa Illumina\Queue\SerializesModels;
la classe SendEmail estende Mailable
usa Queueable, SerializesModels;
/**
* Crea una nuova istanza di messaggio.
*
* @return void
*/
funzione pubblica __construct()
//
/**
* Costruisci il messaggio.
*
* @return $this
*/
funzione pubblica build()
/* Definisce il nome della vista che verrà utilizzato per il modello di posta elettronica */
return $this->view('email');
Crea vista
Crea il file di visualizzazione denominato e-mail.lama.php con il seguente contenuto che verrà inviato come corpo dell'email.
Benvenuto in Linux Suggerimento
Impara facilmente Laravel
Crea una classe di lavoro
Esegui il seguente comando per creare una classe di lavoro. Il nome del file della classe di lavoro denominato Invio email.php verrà creato nella posizione app/Lavori.
$ php artigiano make:job SendingEmailIl contenuto del Invio email.php è mostrato sotto. Devi impostare un indirizzo email valido all'interno del per() metodo del maniglia() funzione per verificare se il codice funziona correttamente. Imposta l'indirizzo email valido al posto di "Indirizzo e-mail del destinatario" dentro il per() metodo per verificare se la coda funziona correttamente.
spazio dei nomi App\Lavori;usa Illumina\Bus\Queueable;
usa Illumina\Contracts\Queue\ShouldQueue;
usa Illuminate\Fondazione\Bus\Dispatchable;
usa Illumina\Queue\InteractsWithQueue;
usa Illumina\Queue\SerializesModels;
/* Aggiunti i pacchetti necessari */
usa la posta;
usa App\Mail\SendEmail;
la classe SendingEmail implementa ShouldQueue
usa Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Crea una nuova istanza di lavoro.
*
* @return void
*/
funzione pubblica __construct()
//
/**
* Esegui il lavoro.
*
* @return void
*/
handle di funzione pubblica()
/* Crea l'oggetto della classe mailable e invia email */
$email = nuovo InviaEmail();
/* Imposta un indirizzo email valido */
Mail::to('Indirizzo email del destinatario ')->send($email);
Crea controller
Esegui il seguente comando per creare un controller per gestire la coda. Quando il handleQueue() funzione del controller viene eseguita, il lavoro in coda verrà inviato e l'e-mail verrà inviata.
$ php craft make:controller SendEmailControllerSendEmailController.php
spazio dei nomi App\Http\Controllers;usa Illumina\Http\Request;
/* Aggiungi i pacchetti necessari */
usa App\Jobs\SendingEmail;
usa Carbon\Carbon;
class SendEmailController estende Controller
/**
* Utilizzo delle code di Laravel
*/
funzione pubblica handleQueue()
/* Inserisce il nuovo lavoro nella coda dei lavori */
dispatch(new SendingEmail());
/* Stampa il messaggio dopo l'invio dell'email */
echo 'L'email è stata inviata';
Aggiungi percorso
Apri il ragnatela.php file dal itinerari cartella e aggiungere il seguente percorso per eseguire il lavoro in coda utilizzando il controller.
Route::get('email', '[email protected]');Esegui il seguente URL nel browser per verificare se il codice funziona. Apri l'indirizzo email del destinatario per verificare se è stata ricevuta una nuova email.
http://localhost:8000/emailqueue
Aggiungi ritardo
Apri il Invio email.php file di nuovo e modificare il contenuto del handleQueue() funzione per aggiungere il ritardo di cinque secondi ai lavori in coda.
spazio dei nomi App\Http\Controllers;usa Illumina\Http\Request;
/* Aggiungi i pacchetti necessari */
usa App\Jobs\SendingEmail;
usa Carbon\Carbon;
class SendEmailController estende Controller
/**
* Utilizzo delle code di Laravel
*/
funzione pubblica handleQueue()
/* Crea un nuovo oggetto coda con 5 secondi di ritardo */
$emailJob = (new SendingEmail())->delay(Carbon::now()->addSeconds(5));
/* Inserisce il nuovo lavoro nella coda dei lavori */
spedizione($emailJob);
/* Stampa il messaggio dopo aver inviato l'email */
echo 'Email inviata dopo cinque secondi';
Ancora una volta, esegui 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 email del destinatario per scoprire se è stata ricevuta una nuova email dopo 5 secondi. Se il lavoro in coda funziona correttamente, verrà ricevuta un'e-mail con il seguente contenuto.
Conclusione
Questo tutorial mostra un utilizzo molto semplice della coda di Laravel. Puoi utilizzare le code Laravel per vari scopi, in base ai requisiti della tua applicazione. Spero che questo tutorial abbia aiutato i lettori a comprendere meglio i concetti di base delle code di Laravel.