laravel

Laravel-Warteschlangen-Tutorial

Laravel-Warteschlangen-Tutorial
Die Laravel-Warteschlange ist eine der nützlichsten Funktionen des Laravel-Frameworks. Diese Funktion wird verwendet, um auf zeitaufwändige Aufgaben zu warten und Aufgaben zu einem späteren Zeitpunkt auszuführen, um die Leistung und Effizienz der Laravel-Anwendung zu verbessern. Diese Funktion bietet verschiedene Arten von Warteschlangen in Back-Ends, wie Amazon SQS, Redis, Beanstalk, synchrone Treiber oder relationale Datenbanken. Ein Null-Warteschlangentreiber wird verwendet, um Jobs in der Warteschlange zu verwerfen. Die Konfigurationsdatei der Warteschlange wird im Speicherort gespeichert Konfiguration/Warteschlange.php. Ein gängiges Beispiel für die Verwendung der Laravel-Warteschlange ist das Senden von E-Mails. Wenn eine große Anzahl von E-Mails in der Laraval-Anwendung verarbeitet werden muss, ist es besser, Laravel-Warteschlangen zu verwenden, um die Verarbeitung zu beschleunigen. Dieses Tutorial zeigt, wie Sie Laravel-Warteschlangen verwenden, um eine große Anzahl von E-Mails zu senden.

Voraussetzungen

Bevor Sie mit diesem Tutorial beginnen, führen Sie zunächst die folgenden Aufgaben aus:

  1. Installieren Sie ein neues Laravel-Projekt
  2. Datenbankverbindung einrichten
  3. 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: Tabelle

Sie 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 migrieren

Mail-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 SendEmail

Der 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 SendingEmail

Der 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 SendEmailController

SendEmailController.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.

Die 5 besten Arcade-Spiele für Linux
Heutzutage sind Computer ernsthafte Maschinen, die zum Spielen verwendet werden. Wenn du den neuen Highscore nicht bekommst, weißt du was ich meine. I...
Schlacht um Wesnoth 1.13.6 Entwicklung veröffentlicht
Schlacht um Wesnoth 1.13.6, das letzten Monat veröffentlicht wurde, ist die sechste Entwicklungsversion im 1.13.x-Serie und bietet eine Reihe von Verb...
So installieren Sie League of Legends auf Ubuntu 14.04
Wenn Sie ein Fan von League of Legends sind, dann ist dies eine Gelegenheit für Sie, League of Legends zu testen. Beachten Sie, dass LOL von PlayOnLin...