Heim  >  Artikel  >  PHP-Framework  >  So verwenden Sie die Laravel-Warteschlange

So verwenden Sie die Laravel-Warteschlange

PHPz
PHPzOriginal
2023-04-12 09:12:311095Durchsuche

Laravel ist ein sehr beliebtes PHP-Framework, das für seine Einfachheit, Benutzerfreundlichkeit und leistungsstarken Funktionen beliebt ist. In Laravel ist die Warteschlange eine sehr nützliche Funktion, die Entwicklern bei der Lösung von Problemen wie hoher Parallelität und großem Datenvolumen helfen kann. In diesem Artikel werden wir einige Grundlagen von Laravel-Warteschlangen und deren Verwendung untersuchen.

1. Was ist die Laravel-Warteschlange?

Die Laravel-Warteschlange ist ein Tool zum Verarbeiten asynchroner Aufgaben und kann diese Aufgaben dann asynchron im Hintergrund verarbeiten die Antwortzeit der aktuellen Anfrage. Mithilfe von Warteschlangen können verschiedene Aufgaben erledigt werden, beispielsweise das Versenden von E-Mails, das Verarbeiten von Bildern, das Generieren von PDFs usw.

Das Funktionsprinzip einer Warteschlange ist sehr einfach: Aufgaben werden zuerst in die Warteschlange gestellt, und dann führt der Hintergrundprozess diese Aufgaben asynchron aus. Die Warteschlange in Laravel unterstützt mehrere Warteschlangentreiber wie Redis, RabbitMQ, Beanstalkd usw. Entwickler können den für sie geeigneten Warteschlangentreiber entsprechend ihren eigenen Anforderungen auswählen.

2. So verwenden Sie die Laravel-Warteschlange

Die Verwendung der Laravel-Warteschlange ist sehr einfach. Befolgen Sie einfach die folgenden Schritte:

  1. Warteschlange konfigurieren Treiber

Die Konfiguration des Warteschlangentreibers in Laravel ist sehr einfach. Sie müssen nur die Datei config/queue.php öffnen und den entsprechenden Warteschlangentreiber konfigurieren. Wenn Sie beispielsweise Redis als Warteschlangentreiber verwenden, können Sie es wie folgt konfigurieren:

'connections' => [
    'redis' => [
        'driver' => 'redis',
        'connection' => 'default',
        'queue' => 'default',
        'retry_after' => 90,
        'block_for' => null,
    ],
],
  1. Aufgabenklasse erstellen

Eine zu verarbeitende Klasse erstellen Aufgaben sind sehr einfach, Sie müssen lediglich eine Handle-Methode definieren. Zum Beispiel erstellen wir eine Aufgabenklasse zum Versenden von E-Mails:

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Mail;

class SendEmail implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $user;

    /**
     * Create a new job instance.
     *
     * @param $user
     */
    public function __construct($user)
    {
        $this->user = $user;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        Mail::to($this->user->email)->send(new Welcome($this->user));
    }
}
  1. Fügen Sie die Aufgabe zur Warteschlange hinzu.

Das Hinzufügen der Aufgabe zur Warteschlange erfolgt Sehr einfach, verwenden Sie einfach die Just-Dispatch-Methode. Wir können es zum Beispiel so im Controller verwenden:

use App\Jobs\SendEmail;

public function index()
{
    $user = auth()->user();
    SendEmail::dispatch($user);

    return view('welcome');
}
  1. Starten Sie den Warteschlangenprozess

Nachdem die Aufgabe zur Warteschlange hinzugefügt wurde , müssen Sie schließlich den Warteschlangenprozess starten. Es gibt viele Möglichkeiten, den Warteschlangenprozess zu starten. Sie können den eigenen Artisan-Befehl von Laravel oder Tools von Drittanbietern wie Supervisor verwenden. Zum Beispiel verwenden wir den Artisan-Befehl, um den Warteschlangenprozess zu starten:

php artisan queue:work --tries=3 --timeout=30

Durch die oben genannten Schritte können wir die Laravel-Warteschlange verwenden, um asynchrone Aufgaben zu verarbeiten.

3. Häufig verwendete Laravel-Warteschlangenfunktionen

Es gibt viele andere nützliche Funktionen in der Laravel-Warteschlange, wie zum Beispiel:

  1. Fehlerbehandlung Task

Wenn die Aufgabenausführung fehlschlägt, können Sie die fehlgeschlagene Aufgabe mithilfe der Tabelle failed_jobs der Warteschlange aufzeichnen. Gleichzeitig können wir auch die Anzahl der Aufgabenversuche und das Zeitlimit festlegen, um zu verhindern, dass die Aufgabe immer fehlschlägt.

  1. Gleichzeitige Verarbeitungsaufgaben

Die Laravel-Warteschlange unterstützt die gleichzeitige Verarbeitung von Aufgaben auf der Befehlszeile, um Aufgaben gleichzeitig zu verarbeiten , wodurch die Effizienz der Aufgabenverarbeitung verbessert wird.

  1. Aufgabenstatus überwachen

Mit Laravel Horizon, einem Drittanbieter-Tool, können wir den Status von Aufgaben, die Warteschlangenlänge und andere problemlos überwachen Informationen, die für uns bequem sind. Probleme zeitnah erkennen und beheben.

  1. Warteschlangengruppierungsverarbeitung

Wenn Sie Aufgaben gruppieren müssen, können Sie die Aufgabe der angegebenen Warteschlange hinzufügen. Beispielsweise fügen wir die obige SendEmail-Aufgabe zur E-Mail-Warteschlange hinzu:

SendEmail::dispatch($user)->onQueue('mail');

Beim Starten des Warteschlangenprozesses können Sie angeben, welche Warteschlangen verarbeitet werden sollen:

php artisan queue:work --queue=mail

Die oben genannten sind einige Grundkenntnisse der Laravel-Warteschlange und deren Verwendung. Mit der Weiterentwicklung von Laravel werden Warteschlangen immer leistungsfähiger. Ich glaube, dass jeder durch das Studium dieses Artikels ein tieferes Verständnis für die Verwendung von Laravel-Warteschlangen erhält und diese besser auf die tatsächliche Entwicklung anwenden kann.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Laravel-Warteschlange. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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