Voraussetzungen
Bevor Sie mit diesem Tutorial beginnen, führen Sie zunächst die folgenden Aufgaben aus:
- Installieren Sie ein neues Laravel-Projekt
- Datenbankverbindung einrichten
- Richten Sie die Konfiguration zum Senden der E-Mails ein (Sie können das E-Mail-Versand-Tutorial zum Senden von E-Mails über SMTP überprüfen)
Tabelle erstellen
Sie müssen die erstellen Arbeitsplätze Tabelle in der Datenbank, um alle Warteschlangen zu speichern. Führen Sie den folgenden Befehl über das Terminal aus, um die Migrationsdatei für die . zu erstellen Arbeitsplätze Tabelle.
$ php Handwerker-Warteschlange: TabelleSie können die Migrationsdatei vom Speicherort aus öffnen Datenbank/Migrationen/. Die Datei enthält folgenden Inhalt.
Verwenden Sie Illuminate\Database\Migrations\Migration;Verwenden Sie Illuminate\Database\Schema\Blueprint;
Verwenden Sie Illuminate\Support\Facades\Schema;
Klasse CreateJobsTable erweitert Migration
/**
* Führen Sie die Migrationen aus.
*
* @return ungültig
*/
öffentliche Funktion nach oben()
Schema::create('jobs', function (Blueprint $table)
$table->bigIncrements('id');
$table->string('queue')->index();
$table->longText('Nutzlast');
$table->unsignedTinyInteger('versuche');
$table->unsignedInteger('reserved_at')->nullable();
$table->unsignedInteger('available_at');
$table->unsignedInteger('created_at');
);
/**
* Machen Sie die Migrationen rückgängig.
*
* @return ungültig
*/
öffentliche Funktion down()
Schema::dropIfExists('jobs');
Führen Sie den folgenden Befehl vom Terminal aus, um die Job Tabelle.
$ php Handwerker migrierenMail-Klasse erstellen
Sie müssen eine mailfähige Klasse erstellen, um E-Mails aus der Laravel-Anwendung zu senden. Führen Sie den folgenden Befehl aus, um die Mail-Klasse namens class zu erstellen E-Mail senden am Standort App/Mail.
$ php Handwerker make:mail SendEmailDer Inhalt dieser Klasse wird unten angezeigt. Der Dateiname der Ansicht, der in der bauen() Methode wird im nächsten Teil dieses Tutorials erstellt created.
Namespace App\Mail;Verwenden Sie Illuminate\Bus\Queueable;
Verwenden Sie Illuminate\Contracts\Queue\ShouldQueue;
verwenden Sie Illuminate\Mail\Mailable;
Verwenden Sie Illuminate\Queue\SerializesModels;
Klasse SendEmail erweitert Mailable
Verwenden Sie Queueable, SerializesModels;
/**
* Erstellen Sie eine neue Nachrichteninstanz.
*
* @return ungültig
*/
öffentliche Funktion __construct()
//
/**
* Erstellen Sie die Nachricht.
*
* @return $this
*/
öffentliche Funktion build()
/* Definieren Sie den Ansichtsnamen, der für die E-Mail-Vorlage verwendet wird */
return $this->view('email');
Ansicht erstellen
Erstellen Sie die Ansichtsdatei mit dem Namen Email.Klinge.php mit dem folgenden Inhalt, der als E-Mail-Text gesendet wird.
Willkommen beim Linux-Hinweis
Laravel leicht lernen
Erstellen Sie eine Jobklasse
Führen Sie den folgenden Befehl aus, um eine Jobklasse zu erstellen. Der Dateiname der Jobklasse mit dem Namen Email schicken.php wird am Standort erstellt App/Jobs.
$ php Handwerker make:job SendingEmailDer Inhalt der Email schicken.php wird unten gezeigt. Sie müssen eine gültige E-Mail-Adresse im zu() Methode der Griff() Funktion zum Testen, ob der Code richtig funktioniert. Setzen Sie die gültige E-Mail-Adresse anstelle von 'E-Mail-Adresse des Empfängers' innerhalb der zu() Methode, um zu überprüfen, ob die Warteschlange richtig funktioniert.
Namespace App\Jobs;Verwenden Sie Illuminate\Bus\Queueable;
verwenden Sie Illuminate\Contracts\Queue\ShouldQueue;
Verwenden Sie Illuminate\Foundation\Bus\Dispatchable;
Verwenden Sie Illuminate\Queue\InteractsWithQueue;
Verwenden Sie Illuminate\Queue\SerializesModels;
/* Die notwendigen Pakete hinzugefügt */
E-Mail verwenden;
verwenden Sie App\Mail\SendEmail;
Klasse SendingEmail implementiert ShouldQueue
Dispatchable, InteractsWithQueue, Queueable, SerializesModels verwenden;
/**
* Erstellen Sie eine neue Jobinstanz.
*
* @return ungültig
*/
öffentliche Funktion __construct()
//
/**
* Führen Sie den Job aus.
*
* @return ungültig
*/
öffentliche Funktion handle()
/* Objekt der mailable-Klasse erstellen und E-Mail senden */
$email = new SendEmail();
/* Legen Sie eine gültige E-Mail-Adresse fest */
Mail::to('Empfänger-E-Mail-Adresse')->senden($email);
Controller erstellen
Führen Sie den folgenden Befehl aus, um einen Controller für die Verarbeitung der Warteschlange zu erstellen. Wenn der handleQueue() Funktion des Controllers ausgeführt wird, wird der Queue-Job gepusht und die E-Mail versendet.
$ php Handwerker make:controller SendEmailControllerSendEmailController.php
Namespace App\Http\Controllers;Verwenden Sie Illuminate\Http\Request;
/* Füge die notwendigen Pakete hinzu */
verwenden Sie App\Jobs\SendingEmail;
Kohlenstoff\Kohlenstoff verwenden;
Klasse SendEmailController erweitert Controller
/**
* Verwendung von Laravel-Warteschlangen
*/
öffentliche Funktion handleQueue()
/* Schieben Sie den neuen Job in die Job-Warteschlange */
Versand (neue SendingEmail());
/* Nachricht drucken, nachdem E-Mail gesendet wurde */
echo 'E-Mail wurde gesendet';
Route hinzufügen
Öffne das Netz.php Datei aus dem Routen Ordner und fügen Sie die folgende Route hinzu, um den Queue-Job mit dem Controller auszuführen.
Route::get('email', '[email protected]');Führen Sie die folgende URL im Browser aus, um zu überprüfen, ob der Code funktioniert. Öffnen Sie die E-Mail-Adresse des Empfängers, um zu überprüfen, ob eine neue E-Mail eingegangen ist.
http://localhost:8000/emailqueue
Verzögerung hinzufügen
Öffne das Email schicken.php Datei erneut und ändern Sie den Inhalt der handleQueue() Funktion zum Hinzufügen der fünf Sekunden Verzögerung zu den Warteschlangenjobs.
Namespace App\Http\Controllers;Verwenden Sie Illuminate\Http\Request;
/* Füge die notwendigen Pakete hinzu */
verwenden Sie App\Jobs\SendingEmail;
Kohlenstoff\Kohlenstoff verwenden;
Klasse SendEmailController erweitert Controller
/**
* Verwendung von Laravel-Warteschlangen
*/
öffentliche Funktion handleQueue()
/* Neues Queue-Objekt mit 5 Sekunden Verzögerung erstellen */
$emailJob = (new SendingEmail())->delay(Carbon::now()->addSeconds(5));
/* Schieben Sie den neuen Job in die Job-Warteschlange */
Versand($emailJob);
/* Nachricht drucken, nachdem E-Mail gesendet wurde */
echo 'E-Mail nach fünf Sekunden gesendet';
Führen Sie erneut die folgende URL im Browser aus, um zu überprüfen, ob der Code funktioniert. Hier wird die E-Mail nach fünf Sekunden mit der Methode delay() von fünf Sekunden gesendet sent.
http://localhost:8000/emailqueue
Prüfen Sie im Posteingang der Empfänger-E-Mail-Adresse, ob nach 5 Sekunden eine neue E-Mail eingegangen ist. Eine E-Mail mit folgendem Inhalt wird empfangen, wenn der Warteschlangenjob ordnungsgemäß funktioniert.
Fazit
Dieses Tutorial zeigt die sehr einfache Verwendung der Laravel-Warteschlange. Sie können Laravel-Warteschlangen für verschiedene Zwecke verwenden, je nach Ihren Anwendungsanforderungen. Ich hoffe, dass dieses Tutorial den Lesern geholfen hat, die grundlegenden Konzepte von Laravel-Warteschlangen besser zu verstehen.