Laravel Queues Tutorial

Laravel Queues Tutorial
Die Laravel -Warteschlange ist eines der nützlichsten Merkmale des Laravel -Frameworks. Diese Funktion wird verwendet, um auf zeitaufwändige Aufgaben zu warten und zu einem späteren Zeitpunkt Aufgaben 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, Synchronous Triver oder Relational Database. Ein Null -Warteschlangen -Treiber wird verwendet, um in der Warteschlange in die Warteschlange abzubauen. Die Konfigurationsdatei der Warteschlange wird am Speicherort gespeichert Konfiguration/Warteschlange.Php. Ein häufiges Beispiel für die Verwendung der Laravel -Warteschlange ist das Senden von E -Mails. Wenn es erforderlich ist, eine große Anzahl von E -Mails in der Laraval -Anwendung zu bearbeiten. Dieses Tutorial zeigt, wie Sie LaRavel -Warteschlangen verwenden, um eine große Anzahl von E -Mails zu senden.

Voraussetzungen

Bevor Sie dieses Tutorial beginnen, erledigen Sie zunächst die folgenden Aufgaben:

  1. Installieren Sie ein frisches Laravel -Projekt
  2. Richten Sie die Datenbankverbindung ein
  3. Richten Sie die Konfiguration zum Senden der E -Mails ein (Sie können das E -Mail -Senden -Tutorial überprüfen, um E -Mails mit SMTP zu senden)

Tabelle erstellen

Sie müssen die erstellen Arbeitsplätze Tabelle in der Datenbank, um alle Warteschlangen zu speichern. Führen Sie den folgenden Befehl vom Terminal aus, um die Migrationsdatei für die zu erstellen Arbeitsplätze Tisch.

$ php Artisan Warteschlange: Tabelle

Sie können die Migrationsdatei aus dem Speicherort öffnen Datenbank/Migrationen/. Die Datei enthält den folgenden Inhalt.

Verwenden Sie Illuminate \ Database \ Migrations \ Migration;
Verwenden Sie Illuminate \ Database \ Schema \ Blueprint;
Verwenden Sie Illuminate \ Support \ Fassades \ Schema;
Klasse CreateJObStable erweitert die Migration

/**
* Führen Sie die Migrationen aus.
*
* @return void
*/
öffentliche Funktion ()

Schema :: Create ('Jobs', Funktion (Blueprint $ Tabelle)
$ table-> bigIncrements ('id');
$ table-> string ('queue')-> index ();
$ table-> longtext ('payload');
$ table-> unsignedTinyInteger ('Versuche');
$ table-> unsignedInteger ('reserved_at')-> nullable ();
$ table-> unsignedInteger ('verfügbare_at');
$ table-> unsignedInteger ('erstellt_at');
);

/**
* Die Migrationen umkehren.
*
* @return void
*/
öffentliche Funktion Down ()

Schema :: Dropifexisten ('Jobs');

Führen Sie den folgenden Befehl vom Terminal aus, um das zu erstellen Arbeit Tisch.

$ php Artisan migrieren

E -Mail -Klasse erstellen

Sie müssen eine mailable Klasse erstellen, um E -Mails aus der Laravel -Anwendung zu senden. Führen Sie den folgenden Befehl aus, um die benannte Mail -Klasse zu erstellen E-Mail senden am Ort App/Mail.

$ Php Artisan Make: Mail Sendemail

Der Inhalt dieser Klasse ist unten gezeigt. Der Ansichtsakteiname, der in der verwendet wird bauen() Die Methode wird im nächsten Teil dieses Tutorials erstellt.

Namespace App \ Mail;
Verwenden Sie Illuminate \ Bus \ Queueable;
Verwenden Sie Illuminate \ Contracts \ Queue \ SollteQueue;
Verwenden Sie Illuminate \ Mail \ Mailable;
Verwenden Sie Illuminate \ Queue \ SerializesModels;
Klasse Sendemail erweitert mailable

Verwenden Sie anhörbar, serializesModels;
/**
* Erstellen Sie eine neue Nachrichteninstanz.
*
* @return void
*/
Ö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 */
$ this-> view ('E-Mail') zurück;

Ansicht erstellen

Erstellen Sie die benannte Ansichtsdatei Email.Klinge.Php Mit dem folgenden Inhalt, der als E -Mail -Körper gesendet wird.

Willkommen bei Linux Hint


Lerne Laravel leicht

Erstellen Sie eine Jobklasse

Führen Sie den folgenden Befehl aus, um eine Jobklasse zu erstellen. Der Namensklassenmateinamen benannt Email schicken.Php wird am Standort erstellt App/Jobs.

$ Php Artisan Make: Job Sendingemail

Der Inhalt der Email schicken.Php wird unten angezeigt. Sie müssen eine gültige E -Mail -Adresse in die festlegen Zu() Methode der handhaben() Funktion zum Testen, ob der Code ordnungsgemäß funktioniert. Legen Sie die gültige E -Mail -Adresse anstelle von fest von "Empfänger -E -Mail -Adress" in der Zu() Methode, um zu überprüfen, ob die Warteschlange ordnungsgemäß funktioniert.

Namespace App \ Jobs;
Verwenden Sie Illuminate \ Bus \ Queueable;
Verwenden Sie Illuminate \ Contracts \ Queue \ SollteQueue;
Verwenden Sie Illuminate \ Foundation \ bus \ Versandbar;
Verwenden Sie Illuminate \ Queue \ Interactswithqueue;
Verwenden Sie Illuminate \ Queue \ SerializesModels;
/ * Fügte die erforderlichen Pakete hinzu */
Post verwenden;
Verwenden Sie App \ Mail \ sendemail;
Klassensendung implementiert sollte wesentlich

Verwenden Sie Versand, interagierbar, serielles, serializesModellen;
/**
* Erstellen Sie eine neue Jobinstanz.
*
* @return void
*/
Öffentliche Funktion __construct ()

//

/**
* Führen Sie den Job aus.
*
* @return void
*/
öffentliche Funktion Handle ()

/ * Erstellen Sie das Objekt der mailablen Klasse und senden Sie eine E -Mail */
$ mail = new sendemail ();
/ * Setzen Sie eine gültige E -Mail -Adresse */
Mail :: an ('Empfänger-E-Mail-Adresse')-> Senden ($ mail);

Controller erstellen

Führen Sie den folgenden Befehl aus, um einen Controller zu erstellen, um die Warteschlange zu verarbeiten. Wenn das Handlungsqueue () Die Funktion des Controllers wird ausgeführt, der Warteschlangenjob wird gedrückt und die E -Mail wird gesendet.

$ Php Artisan Make: Controller SendemailController

SendemailController.Php

Namespace App \ http \ Controller;
Verwenden Sie Illuminate \ http \ request;
/ * Fügen Sie die erforderlichen Pakete hinzu */
Verwenden Sie App \ Jobs \ sendingemail;
Verwenden Sie Kohlenstoff \ Kohlenstoff;
Klasse SendemailController erweitert den Controller

/**
* Verwenden Sie Laravel -Warteschlangen
*/
öffentliche Funktion Handelsqueue ()

/ * Drücken Sie den neuen Job in der Jobwarteschlange */
Versand (neu sendingemail ());
/ * Meldung drucken nach Senden von E -Mails */
Echo 'E -Mail wurde gesendet';

Route hinzufügen

Öffne das Netz.Php Datei aus der Routen Ordner und fügen Sie die folgende Route hinzu, um den Warteschlangenjob mit dem Controller auszuführen.

Route :: Get ('E -Mail', 'sendemailController@handleQueue');

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 erhalten wurde.

http: // localhost: 8000/mailqueue

Verspätung hinzufügen

Öffne das Email schicken.Php Datei erneut Datei und ändern Sie den Inhalt der Handlungsqueue () Funktionieren Sie die Verzögerung von fünf Sekunden zu den Warteschlangenjobs.

Namespace App \ http \ Controller;
Verwenden Sie Illuminate \ http \ request;
/ * Fügen Sie die erforderlichen Pakete hinzu */
Verwenden Sie App \ Jobs \ sendingemail;
Verwenden Sie Kohlenstoff \ Kohlenstoff;
Klasse SendemailController erweitert den Controller

/**
* Verwenden Sie Laravel -Warteschlangen
*/
öffentliche Funktion Handelsqueue ()

/ * Erstellen Sie ein neues Warteschlangenobjekt mit 5 Sekunden Verzögerung */
$ EMAILJOB = (NEU SENDINGEMAIL ())-> Delay (Carbon :: Now ()-> Fühesekunden (5));
/ * Drücken Sie den neuen Job in der Jobwarteschlange */
Versand ($ E -MailJob);
/ * Meldung drucken nach Senden von E -Mails */
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 Delay () -Methode von fünf Sekunden gesendet.

http: // localhost: 8000/mailqueue

Überprüfen Sie den Posteingang der Empfänger -E -Mail -Adresse, um herauszufinden, ob nach 5 Sekunden eine neue E -Mail erhalten wurde. Eine E -Mail mit dem folgenden Inhalt wird empfangen, wenn der Warteschlangenjob ordnungsgemäß funktioniert.

Abschluss

Dieses Tutorial zeigt eine sehr einfache Verwendung der Laravel -Warteschlange. Sie können Laravel -Warteschlangen für verschiedene Zwecke verwenden, basierend auf Ihren Anwendungsanforderungen. Ich hoffe, dass dieses Tutorial den Lesern geholfen hat, die grundlegenden Konzepte von Laravel -Warteschlangen besser zu verstehen.