Heim  >  Artikel  >  PHP-Framework  >  Erfahren Sie, wie Sie Aufgaben (Jobs) in Laravel-Projekten anpassen

Erfahren Sie, wie Sie Aufgaben (Jobs) in Laravel-Projekten anpassen

PHPz
PHPzOriginal
2023-04-14 09:33:511330Durchsuche

In Laravel sind Aufgaben (Jobs) ein Mechanismus zur Bearbeitung asynchroner Aufgaben. Laravel bietet eine breite Palette von Aufgabenverarbeitungsfunktionen (Jobs), mit denen sich Aufgaben (Jobs) einfach so einrichten lassen, dass sie asynchron im Hintergrund ausgeführt werden, sodass Ihre Anwendung schnell auf Anfragen reagieren und Aufgaben effizient verarbeiten kann.

In diesem Artikel erfahren Sie, wie Sie Aufgaben (Jobs) in Laravel-Anwendungen anpassen, einschließlich der Definition von Aufgaben (Jobs) und der Konfiguration, Verwendung und Verwaltung von Aufgaben (Jobs).

Aufgaben (Jobs) definieren

Das Definieren einer Aufgabe (Jobs) in Laravel ist sehr einfach. Erstellen Sie zunächst eine neue Aufgabenklasse (Jobs) und platzieren Sie den Aufgabenverarbeitungscode in der Methode handle: handle 方法中:

<?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;

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

    public function handle()
    {
        // 处理任务的代码
    }
}

上面的代码中,我们创建了一个名为 ProcessPodcast 的任务类,它继承自 ShouldQueue 接口,表明这是一个需要在队列中处理的任务。该类还使用了 Laravel 的 Dispatchable trait,该 trait 可以让我们使用 dispatch 方法将任务推送到 Laravel 的队列系统中。

除了 handle() 方法外,任务(Jobs)类还可以使用 Laravel 提供的其他方法和功能,例如 before()after() 方法,用于在任务(Jobs)开始和结束时触发某些操作。此外,您还可以使用队列连接器(Queue Connectors)来连接不同的队列和队列服务。

配置队列驱动程序

Laravel支持使用不同的队列驱动程序来管理和运行任务(Jobs)队列。默认情况下,Laravel使用 sync 驱动程序,它会同步执行任务,并在任务完成后返回结果。

要配置队列驱动程序,您需要在 Laravel 的配置文件 config/queue.php 中定义您想要使用的驱动程序。例如,为了使用 Redis 驱动程序,您可以将以下代码添加到 config/queue.php 文件中:

&#39;connections&#39; => [
    // ...
    'redis' => [
        'driver' => 'redis',
        'connection' => 'default',
        'queue' => env('REDIS_QUEUE', 'default'),
        'retry_after' => 90,
        'block_for' => null,
    ],
    // ...
],

上面的代码中,我们将 Redis 队列驱动程序配置为使用默认连接,将队列命名为 default ,并设置了队列的一些属性,例如重试间隔和最大阻塞时间。

推送任务(Jobs)到队列

一旦您定义了一个任务(Jobs),就可以使用 dispatch() 方法将任务推送到 Laravel 的队列系统中。例如:

ProcessPodcast::dispatch($podcast);

在上面的代码中,我们将 $podcast 变量作为参数传递给任务(Jobs)类的构造函数,然后使用 dispatch() 方法将任务推送到队列中。

当您推送任务(Jobs)到队列中时,Laravel会将任务(Jobs)的类、构造函数参数以及任何其他必需的数据序列化为一个字符串。然后,该字符串将被发送到队列,并最终被取出,用于在后台异步地执行任务。

监听和调试队列

一旦您将任务(Jobs)推送到队列中,就可以使用 Laravel 的队列监听器(Queue Listener)来监听队列并处理任务。在命令行中,您可以使用 php artisan queue:listen 命令启动队列监听器。例如:

php artisan queue:listen redis --queue=default

在上面的例子中,我们使用 redis 队列驱动程序,并将队列命名为 defaultrrreee

Im obigen Code haben wir eine Aufgabenklasse namens ProcessPodcast erstellt. Sie erbt vom ShouldQueue-Schnittstelle, die angibt, dass es sich um eine Aufgabe handelt, die in der Warteschlange verarbeitet werden muss. Diese Klasse verwendet auch die Eigenschaft Dispatchable von Laravel, die es uns ermöglicht, Aufgaben mithilfe der Methode dispatch an das Warteschlangensystem von Laravel zu verschieben.

Zusätzlich zur handle()-Methode kann die Jobs-Klasse auch andere von Laravel bereitgestellte Methoden und Funktionen verwenden, wie zum Beispiel before() und after( ) Methode zum Auslösen bestimmter Vorgänge, wenn Aufgaben (Jobs) beginnen und enden. Darüber hinaus können Sie Queue Connectors verwenden, um verschiedene Warteschlangen und Warteschlangendienste zu verbinden.

Warteschlangentreiber konfigurieren

Laravel unterstützt die Verwendung verschiedener Warteschlangentreiber zum Verwalten und Ausführen von Aufgabenwarteschlangen (Jobs). Standardmäßig verwendet Laravel den sync-Treiber, der Aufgaben synchron ausführt und Ergebnisse zurückgibt, wenn die Aufgabe abgeschlossen ist. 🎜🎜Um einen Warteschlangentreiber zu konfigurieren, müssen Sie den Treiber, den Sie verwenden möchten, in der Konfigurationsdatei von Laravel config/queue.php definieren. Um beispielsweise den Redis-Treiber zu verwenden, können Sie den folgenden Code zur Datei config/queue.php hinzufügen: 🎜rrreee🎜Im obigen Code konfigurieren wir den Redis-Warteschlangentreiber für die Verwendung von Standardverbindung: Benennen Sie die Warteschlange als default und legen Sie einige Eigenschaften der Warteschlange fest, z. B. das Wiederholungsintervall und die maximale Blockierungszeit. 🎜🎜🎜Jobs in die Warteschlange verschieben🎜🎜🎜Sobald Sie einen Job definiert haben, können Sie die Methode dispatch() verwenden, um den Job in das Warteschlangensystem von Laravel zu verschieben. Zum Beispiel: 🎜rrreee🎜Im obigen Code übergeben wir die Variable $podcast als Parameter an den Konstruktor der Jobs-Klasse und verwenden dann die Methode dispatch() bis Aufgaben werden in die Warteschlange verschoben. 🎜🎜Wenn Sie einen Job in die Warteschlange verschieben, serialisiert Laravel die Klasse des Jobs, die Konstruktorparameter und alle anderen erforderlichen Daten in einen String. Die Zeichenfolge wird dann an die Warteschlange gesendet und schließlich zur asynchronen Ausführung im Hintergrund entnommen. 🎜🎜🎜Warteschlangen abhören und debuggen🎜🎜🎜Sobald Sie Jobs (Jobs) in die Warteschlange verschieben, können Sie den Warteschlangen-Listener (Queue Listener) von Laravel verwenden, um die Warteschlange abzuhören und die Aufgaben zu verarbeiten. Von der Befehlszeile aus können Sie den Befehl php artisan queue:listen verwenden, um einen Warteschlangen-Listener zu starten. Zum Beispiel: 🎜rrreee🎜Im obigen Beispiel verwenden wir den Warteschlangentreiber redis und nennen die Warteschlange default . Dieser Befehl startet einen Listener, der auf Aufgaben in der Warteschlange wartet. Dieser Listener ist dafür verantwortlich, den Job aus der Warteschlange zu entfernen und ihn auszuführen, sobald der Job verfügbar ist. 🎜🎜Sie können auch den Queue Scheduler in Ihrer Laravel-Anwendung verwenden, um Aufgaben wie geplant auszuführen. Ein Warteschlangenplaner ist ein Mechanismus, der Aufgaben automatisch innerhalb einer bestimmten Zeit ausführt. Um einen Warteschlangenplaner zu installieren, müssen Sie die Jobs (Jobs), die Sie ausführen möchten, im Scheduler (Scheduler) Ihrer Anwendung definieren und mit dem Warteschlangensystem verwenden. Nach der Konfiguration verschiebt der Warteschlangenplaner automatisch Aufträge (Jobs) innerhalb des angegebenen Zeitintervalls in die Warteschlange. 🎜🎜🎜Zusammenfassung🎜🎜🎜Das Konfigurieren und Verwalten von Jobs (Jobs) in einer Laravel-Anwendung ist ein relativ einfacher und praktischer Mechanismus. In diesem Artikel wird beschrieben, wie Sie Aufgaben (Jobs) definieren, Warteschlangentreiber konfigurieren und Warteschlangen-Listener und Warteschlangenplaner zum Verarbeiten von Aufgaben verwenden. Durch die Verwendung der Jobverarbeitungsfunktion von Laravel können Sie Ihre Anwendung Aufgaben im Hintergrund erledigen lassen und so eine höhere Leistung und ein besseres Benutzererlebnis erzielen. 🎜

Das obige ist der detaillierte Inhalt vonErfahren Sie, wie Sie Aufgaben (Jobs) in Laravel-Projekten anpassen. 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