Aktueller Standort: Startseite> Neueste Artikel> Benutzerhandbuch für Laravel -Warteschlangenfunktion: Konfigurieren, Definieren von Aufgaben und Ausführung

Benutzerhandbuch für Laravel -Warteschlangenfunktion: Konfigurieren, Definieren von Aufgaben und Ausführung

M66 2025-07-02

Einführung

Warteschlange ist ein häufiger asynchroner Verarbeitungsmechanismus, der eine wichtige Rolle bei der Webentwicklung spielt. Das Laravel -Framework bietet leistungsstarke Warteschlangenfunktionen, mit denen sich leicht verschiedene Hintergrundaufgaben erledigen können, z. B. das Senden von E -Mails, das Generieren von Berichten und die Verarbeitung von Big Data. In diesem Artikel wird detailliert eingeführt, wie Sie Warteschlangenfunktionen im Laravel -Framework verwenden, einschließlich Warteschlangenkonfiguration, Aufgabendefinition und Ausführung und entsprechende Code -Beispiele.

Konfigurieren von Warteschlangen

Im Laravel -Framework ist die Konfiguration der Warteschlangen sehr einfach. Öffnen Sie zunächst die Konfigurationsdateikonfiguration/Queue.php und setzen Sie das Warteschlangenantrieb und die entsprechenden Verbindungsparameter. Laravel unterstützt eine Vielzahl von Warteschlangenfahrten wie Datenbank, Redis, BeaneStalkd usw. Das folgende Beispiel wird durch die Verwendung eines Datenbanklaufwerks als Beispiel veranschaulicht:

 <span class="fun">&#39;Connections&#39; => [&#39;Datenbank&#39; => [&#39;Treiber&#39; => &#39;Datenbank&#39;, &#39;Tabelle&#39; => &#39;Jobs&#39;, &#39;Queue&#39; => &#39;Standard&#39;, &#39;retry_after&#39; => 90,],],</span>

In der obigen Konfiguration gibt der Treiber an, dass der Warteschlangentreiber ein Datenbank -Treiber ist. Die Tabelle gibt den Datentabellennamen der Warteschlangenaufgabe an, die Warteschlange gibt den Namen der Standardwarteschlange an und die Retry_After -Einstellung der Wiederholungszeit, nachdem die Ausführung der Aufgabe fehlschlägt.

Aufgaben definieren

Im Laravel -Framework werden Warteschlangenaufgaben (Jobs) im Unterricht definiert und normalerweise im App/Job -Verzeichnis gespeichert. Wir erstellen eine einfache Warteschlangenaufgabe zum Senden von E -Mails.

Verwenden Sie zunächst den Handwerksanweisungsbefehl, um eine Warteschlangen -Task -Vorlage zu generieren:

 <span class="fun">Php Artisan Make: Job Sendemailjob</span>

Nach dem Erfolg der Generation wird eine Klassendatei namens SendEmailjob im App/Job -Verzeichnis generiert. Öffnen Sie diese Datei, der Code ist wie folgt:

 <span class="fun">Namespace Appjobs; Verwenden Sie IlluminateBusqueable; Verwenden Sie IlluminateContractsqueueuesHouldqueue; Verwenden Sie IlluminateFoundationBusDispatchable; Verwenden Sie IlluminateQuEinTernactswithqueue; Verwenden Sie IlluminatequeueserializesModels; Klasse SendEMailjob -Geräte sollte queue {Versand, interagierbar, interagierbar, anhörbar, serializesModels; Öffentliche Funktion __construct () {} öffentliche Funktion Handle () {// Logischer Code zum Senden von E -Mails}}</span>

In dieser Klasse können wir den logischen Code zum Senden von E -Mails definieren. Es ist zu beachten, dass die Soll -Queue -Schnittstelle als Klasse implementiert werden muss, da Warteschlangenaufgaben asynchron ausgeführt werden. Gleichzeitig bieten andere Merkmale (Merkmale) Versand, InteractswithQueue, Warteschlangen und SerializesModels Unterstützung für Warteschlangenvorgänge und Objekt -Serialisierung.

Aufgabe des Beitritts

Im Laravel -Framework wird Task Enqueuing durch Aufrufen der Versandfunktion erreicht. Hier ist ein Beispielcode, um die SendEMailjob -Aufgabe zu ermitteln:

 <span class="fun">appjobssendemailjob verwenden; Versand (neuer sendemailjob ());</span>

Der obige Code fügt die Sendemailjob -Aufgabe der Standardwarteschlange hinzu. Wenn Sie einen Warteschlangennamen angeben möchten, können Sie die Onqueue -Methode verwenden:

 <span class="fun">appjobssendemailjob verwenden; Versand ((neuer SendEMailjob ())-> Onqueue (&#39;E-Mails&#39;));</span>

Wenn Sie möchten, dass die Aufgabe verzögert wird, können Sie die Verzögerungsmethode verwenden:

 <span class="fun">appjobssendemailjob verwenden; $ Job = (neuer sendemailjob ())-> delay (carbon :: now ()-> addminutes (10)); Versand ($ Job);</span>

Warteschlangenaufgaben ausführen

Im Laravel -Framework können Warteschlangenaufgaben auf zwei Arten ausgeführt werden: synchrone Ausführung und asynchrone Ausführung.

Synchronausführung (Synchronisierungstreiber)

Die synchrone Ausführung bezieht sich auf die Aufgabe, die sofort in der aktuellen Anfrage ausgeführt wird, ohne vom Warteschlangentreiber verarbeitet zu werden. Setzen Sie einfach das Standard -Warteschlangenantrieb in der Konfigurationsdateikonfiguration/queue.php auf "synchronisieren":

 <span class="fun">&#39;Standard&#39; => env (&#39;queue_driver&#39;, &#39;sync&#39;),</span>

Zu diesem Zeitpunkt wird die Aufgabe sofort in der aktuellen Anfrage ausgeführt.

Asynchrone Ausführung

Die asynchrone Ausführung bezieht sich auf die Aufgabe, die vom Warteschlangentreiber verarbeitet und ausgeführt wird. In config/queue.php kann das Standard -Warteschlangenantrieb auf ein anderes Laufwerk festgelegt werden, z. B. "Datenbank".

 <span class="fun">&#39;Standard&#39; => env (&#39;queue_driver&#39;, &#39;Datenbank&#39;),</span>

Verwenden Sie dann den folgenden Befehl, um Warteschlangenaufgaben anzuhören und auszuführen:

 <span class="fun">PHP Artisan Warteschlange: Arbeit</span>

Zu diesem Zeitpunkt wird die Aufgabe zur Warteschlange hinzugefügt und von der Warteschlange: Arbeitsbefehle angehört und ausgeführt.

Zusammenfassen

In den obigen Schritten können wir die Warteschlangenfunktion im Laravel -Framework implementieren und entsprechende Code -Beispiele mit der Aufgabe des Sendens von E -Mails als Beispiel angeben. Die Warteschlangenfunktion kann den Entwicklern helfen, Hintergrundaufgaben besser zu erledigen und die Parallelitäts- und Reaktionsgeschwindigkeit des Systems zu verbessern. In der tatsächlichen Entwicklung können auch andere Funktionen und Dienste von Drittanbietern kombiniert werden, um effizientere Funktionen zu erzielen. Ich hoffe, dieser Artikel wird Ihnen bei der Verwendung des Laravel -Frameworks hilfreich sein.