Heim > PHP-Framework > Laravel > Hauptteil

Laravel-Entwicklung: Wie verwende ich die Laravel-Warteschlange, um asynchrone Aufgaben zu erledigen?

WBOY
Freigeben: 2023-06-13 20:32:01
Original
2206 Leute haben es durchsucht

Da Anwendungen immer komplexer werden, ist die Handhabung und Verwaltung großer Daten- und Prozessmengen eine Herausforderung. Um mit dieser Situation umzugehen, stellt Laravel den Benutzern ein sehr leistungsfähiges Tool zur Verfügung, die Laravel Queue (Queue). Es ermöglicht Entwicklern, Aufgaben wie das Versenden von E-Mails, das Erstellen von PDFs, das Zuschneiden von Bildern usw. im Hintergrund auszuführen, ohne dass dies Auswirkungen auf die Benutzeroberfläche hat. In diesem Artikel werden wir uns eingehend mit der Verwendung von Laravel-Warteschlangen befassen.

Was ist Laravel Queue? Queue ist eine Möglichkeit, Informationen zu verarbeiten und zu verwalten. Es handelt sich um eine stapelartige Struktur, das heißt: First in, first out. Warteschlangen können für die asynchrone Verarbeitung verwendet werden, sodass Benutzer ihre Arbeit fortsetzen können, ohne auf den Abschluss lang laufender Prozesse warten zu müssen. Laravel Queue ist ein integriertes Redis- oder Beanstalk-basiertes Warteschlangensystem, das sehr zeitaufwändige Aufgaben im Hintergrund ausführen kann, ohne dass sich dies negativ auf die Leistung der Webanwendung auswirkt.

Vorteile der Laravel-Warteschlange

Bei Verwendung eines Warteschlangensystems kann die Erledigung einiger Aufgaben lange dauern. Ein klarer Vorteil der Warteschlange von Laravel besteht darin, dass diese Aufgaben zwischen Anfragen und Antworten verarbeitet werden können, ohne auf deren Abschluss warten zu müssen. Dies bedeutet, dass bei Anwendungen, die große Datenmengen oder lang laufende Aufgaben verarbeiten müssen, weniger Threads oder Prozesse ausgeführt werden können, während viele Aufgaben verarbeitet werden. Hier sind einige der Vorteile von Laravel Queues:

Lang laufende Aufgaben haben keinen Einfluss auf die Leistung von Webanfragen.
  1. Sie können weitere Aufgaben hinzufügen, sodass mehr Vorgänge erledigt werden können.
  2. Kann Aufgaben bewältigen, die zeitaufwändig sind und keine sofortige Reaktion erfordern, wie z. B. das Versenden von E-Mails oder das Erstellen von PDFs.
  3. Sie können die Aufgabenverarbeitung im Hintergrund planen, um bei jeder Anfrage Zeit zu sparen.
  4. Sie können Systeme haben, die die Möglichkeit haben, mit Fehlern und Ausfällen umzugehen.
  5. So fügen Sie Aufgaben zur Laravel-Warteschlange hinzu

In Laravel können Sie die Artisan-Befehlszeile verwenden, um Aufgaben zur Warteschlange hinzuzufügen. Dazu schreiben Sie einen Befehl und definieren die auszuführende Aufgabe. Die Aufgabe kann eine beliebige Funktion sein, beispielsweise die Verwendung von E-Mail-Verarbeitungs- oder PDF-Generierungssoftware.

Wenn wir beispielsweise eine Aufgabe zur Warteschlange hinzufügen möchten, verwenden Sie den folgenden Befehl:

php artisan queue:work
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dieser Befehl weist Ihre Anwendung an, mit der Arbeit zu beginnen und alle anderen Befehle zu verarbeiten.

So funktioniert die Laravel-Warteschlange

Die Laravel-Warteschlange ist ein Warteschlangensystem, das auf der Weitergabe von Nachrichten basiert. Ein typisches Warteschlangensystem besteht aus drei Hauptkomponenten:

Produzent: Ein Produzent ist eine Anwendung oder ein Prozess, der dafür verantwortlich ist, Nachrichten an die Warteschlange zu senden, wo sie entweder verarbeitet oder später verarbeitet werden.
  • Einheitliche Warteschlange: Eine Warteschlange ist ein virtueller Container, in dem Nachrichten gespeichert werden. Jede Nachricht gehört zu einer bestimmten Warteschlange. Dies garantiert, dass jede Aufgabe in der Reihenfolge „First-in, First-out“ aus der Warteschlange verarbeitet oder ausgeführt wird.
  • Consumer: Ein Consumer ist ein Prozess oder eine Anwendung, die unverarbeitete Nachrichten in einer Warteschlange verarbeitet.
  • In Laravel-Warteschlangen sind Anwendungen Produzenten und Konsumenten. Aufgaben können mit dem folgenden Befehl zur Warteschlange hinzugefügt werden:
php artisan queue:work
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dieser Befehl startet den Consumer, startet den Job und verarbeitet alle anderen Befehle. Daten können dann mit dem folgenden Befehl zur Warteschlange hinzugefügt werden:

php artisan queue:listen
Nach dem Login kopieren

So verwenden Sie die Laravel-Warteschlange

Das Laravel-Warteschlangensystem ist sehr einfach zu verwenden. Um die Verwendung besser zu verstehen, schauen wir uns die Verwendung zum Versenden von E-Mails genauer an. Wir werden eine Aufgabe erstellen, die eine E-Mail sendet, und diese dann im Hintergrund ausführen.

Schritt 1: Erstellen Sie eine Aufgabe in Ihrer Laravel-Anwendung.

Erstellen Sie eine neue Aufgabenklasse und definieren Sie die erforderlichen Funktionen und Variablen wie E-Mail-Adresse, Betreff und Inhalt. Das folgende Beispiel zeigt eine Aufgabenklasse namens SendEmail.

namespace AppJobs;
use AppMailsSendUserEmails;
use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateFoundationBusDispatchable;
use IlluminateQueueInteractsWithQueue;
use IlluminateQueueSerializesModels;

class SendEmail implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    protected $request;
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($request)
    {
        $this->request = $request;
    }
    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        $email = new SendUserEmails($this->request);
        Mailer::send($email);
    }
}
Nach dem Login kopieren

Diese Aufgabe erstellt die E-Mail-Anfrage, die an die SendEmail-Klasse übergeben wird.

Schritt 2: Aufgaben zur Warteschlange hinzufügen

Da wir nun die SendEmail-Klasse eingerichtet haben, müssen wir Aufgaben zur Warteschlange hinzufügen. Wir fügen die Aufgabe mit dem folgenden Befehl zur Warteschlange hinzu:

SendEmail::dispatch($request)->delay(now()->addSeconds(10));
Nach dem Login kopieren

Dieser Befehl weist die Warteschlange an, die Aufgabe nach 10 Sekunden auszuführen. Mit der Verzögerungsfunktion können Sie die Ausführung einer Aufgabe verzögern, um fehlgeschlagene Aufgaben zu antizipieren und zu versuchen, sie vor der Ausführung der Aufgabe zu beheben.

Schritt 3: Die Aufgabe in der Warteschlange bearbeiten

Zuletzt müssen wir unsere Aufgabe in der Warteschlange bearbeiten. Wir können Aufgaben, die in der Warteschlange auf ihre Ausführung warten, mit dem folgenden Befehl bearbeiten:

php artisan queue:work
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Mit diesem Befehl können wir einen neuen Warteschlangenhandler starten, der alle Anforderungen in der Warteschlange verarbeitet. Anforderungen werden in der Reihenfolge verarbeitet, in der sie der Warteschlange hinzugefügt werden.

Fazit

Die Laravel-Warteschlange ist ein sehr wichtiges Tool des Laravel-Frameworks, mit dem Sie alle asynchronen Aufgaben effizient bearbeiten können. Anwendungen können große Datenmengen effizient verarbeiten und Kunden können durch die Optimierung von Warteschlangen- und Verarbeitungsvorgängen eine optimale Leistung genießen. In diesem Artikel haben wir uns eingehend mit dem Versenden von E-Mails mithilfe von Laravel-Warteschlangen und dem Hinzufügen von Aufgaben zur Warteschlange befasst. Allerdings sind Laravel-Warteschlangen auch bei der Handhabung anderer Aspekte komplexer Anwendungen sehr nützlich. Die Larevel-Warteschlange hat sich als sehr zuverlässiges und benutzerfreundliches Warteschlangensystem erwiesen.

Das obige ist der detaillierte Inhalt vonLaravel-Entwicklung: Wie verwende ich die Laravel-Warteschlange, um asynchrone Aufgaben zu erledigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage