Tutorial zur grundlegendsten Bedienung der Queue in Laravel
Der Laravel-Warteschlangendienst bietet eine einheitliche API für verschiedene Hintergrundwarteschlangen. Der Artikel stellt Ihnen hauptsächlich das grundlegendste Bedienungs-Tutorial zur Verwendung von Warteschlangen in Laravel vor Als Referenz werfen wir einen Blick darauf.
Vorwort
Der Warteschlangendienst in Laravel unterscheidet sich nicht von anderen Warteschlangendiensten. Sie sind die einfachsten und am häufigsten verwendeten Der Prozess entspricht dem menschlichen Denken: Es gibt einen Ort zum Speichern der Warteschlangeninformationen, ein PHP-Prozess schreibt die Aufgaben, wenn er ausgeführt wird, und ein anderer PHP-Daemon-Prozess fragt die Warteschlangeninformationen ab, führt die Aufgaben aus und löscht sie, die die Ausführungsanforderungen erfüllen. Da PHP eine URL-gesteuerte synchrone Sprache ist und von Natur aus blockiert, ist es nicht verwunderlich, dass Laravel ein Daemon-Tool zum Abfragen und Ausführen von Warteschlangeninformationen bereitstellt.
Es war das erste Mal in den letzten zwei Tagen, dass ich mit der Warteschlange von Laravel in Kontakt kam, und es hat lange gedauert. . . Nach viel harter Arbeit habe ich immer noch das Gefühl, dass ich nicht weiß, wie man Laravel verwendet. Die Dokumentation ist relativ einfach und zusammengefasst, und es ist etwas schwierig, den Quellcode zu lesen (aber den Quellcode zu lesen und langsam zu debuggen und zu überprüfen). es ist immer noch das zuverlässigste).
Das Folgende ist eine einfache Demo von mir, die nur die grundlegendsten Warteschlangenoperationen verwendet. Fortgeschrittenere Operationen erfordern mehr Zeit:)
Wie bei mir gibt es einige Warteschlangen für den Anfang Laravel. Schüler, die in Schwierigkeiten sind, können miteinander kommunizieren.
Konfiguration
Redis-Paket hinzufügen
in Composer.json Fügen Sie „predis/predis“: „~1.0“ zum Abschnitt „require“ hinzu und erstellen Sie dann einen Composer, um ihn zu aktualisieren.
database.php
Konfigurieren Sie den Redis-Datenbankteil in der Datenbank.php-Konfigurationsdatei. Standardmäßig gibt es eine Standardverbindung, verwenden Sie einfach diese: )
Bearbeiten Sie entsprechend den in dieser Standardverbindung erforderlichen Konfigurationselementen die .env-Konfigurationsdatei und geben Sie REDIS_HOST, REDIS_PASSWORD und REDIS_PORT mit den entsprechenden Werten von Redis auf Ihrem eigenen Server ein.
queue.php
Zuerst müssen Sie QUEUE_DRIVER in .env konfigurieren. Da Sie jetzt Redis verwenden möchten, konfigurieren Sie es für Redis.
Konfigurieren Sie dann die Redis-Verbindung im Abschnitt „Verbindungen“ von queue.php, wobei der entsprechende Wert von „connection“ die Standardverbindung von Redis in „database.php“ ist.
Aufgabenklasse
Der nächste Schritt besteht darin, die eigentliche Operationsklasse zu schreiben, um die Erstellung zu vereinfachen Aufgabenklassen:
php artisan make:job Demo
Das Jobs-Verzeichnis wird im App-Verzeichnis generiert, das bereits über die Aufgabenklasse Demo.php verfügt.
Lumen verfügt nicht über diesen handwerklichen Befehl, aber er ist sehr praktisch. Standardmäßig ist bereits eine BeispielJob.php geschrieben. Kopieren Sie sie einfach und ändern Sie den Namen.
Schreiben Sie zunächst einen einfachen Protokollausgabetest in der Handle-Methode:
Log::info('Hello, queue');
Aufgaben ausgeben
Schreiben Sie nun eine Eingabefunktion, um die Aufgabe in die Warteschlange zu verschieben. Verwenden Sie die Hilfsfunktion „dispatch()“:
Die folgende Methode wird in Laravel verwendet:
Demo::dispatch();
Die folgende Methode wird in Lumen verwendet:
dispatch(new Demo);
Offene Warteschlange
Wenn alles gut geht, ist dies der letzte Schritt. In der Befehlszeile ausführen:
php artisan queue:listen --queue=default
Es überwacht die Warteschlange und gibt einen einfachen Ausführungsstatus aus, wie zum Beispiel:
[2017-11-07 02:12:47] Processing: App\Jobs\Demo [2017-11-07 02:12:47] Processed: App\Jobs\Demo
Sobald es keine Probleme gibt, können Sie dieses Warteschlangenskript im Hintergrund ausführen lassen:
php artisan queue:work --daemon --quiet --queue=default 1>> /dev/null 2>&1
Erweitert: )
Beim Pushen in die Warteschlange müssen normalerweise Parameter übergeben werden. Wie übergeben Sie sie hier?
Parameterübergabe
Übergabe
Die Methode zur Übergabe von Parametern in der Eingabefunktion ist wie folgt:
Die folgende Methode wird in Laravel verwendet:
$param = 'Stephen'; Demo::dispatch($param);
Die folgende Methode wird in Lumen verwendet:
$param = 'Stephen'; dispatch(new Demo($param));
Empfangen
Die Methode zum Empfangen von Parametern in der Task-Klasse ist wie folgt:
protected $param; /** * Create a new job instance. * * @return void */ public function __construct($param) { $this->param = $param; } /** * Execute the job. * * @return void */ public function handle() { Log::info('Hello, ' . $this->param); }
Dies ist der erste Versuch. Es gibt viele erweiterte Verwendungen, wie z. B. verzögerte Verteilung, Fehlerbehandlung, Priorität, Fehlerbehandlung usw. Ich werde in Zukunft weiter schreiben :)
Mehrere Warteschlangen
Dies ist ein Problem, das berücksichtigt werden muss. Es ist für mich unmöglich, alle Aufgaben in eine Warteschlange zu stellen Dies wird als Standard bezeichnet, was die Verwaltung der Warteschlange erschwert.
Um verschiedene Warteschlangen anzugeben, ist es sehr einfach, direkt nach der Funktion „dispatch()“ die Methode onQueue() zu befolgen:
Demo::dispatch()->onQueue('emails');
Nein, Ich habe diese Warteschlange namens E-Mails anscheinend nicht definiert. Nun, natürlich müssen wir einige Änderungen an der Redis-Konfigurationswarteschlange in der Konfigurationsdatei queue.php vornehmen. Dies hat zur Folge, dass der Name der Warteschlange während der Laufzeit dynamisch abgerufen werden kann hartcodiert.
Wenn Sie das Lumen-Framework verwenden, erhalten Sie eine Fehlermeldung, wenn Sie Folgendes direkt schreiben: Aufruf einer Mitgliedsfunktion onQueue() für einen String.
原因在于 Lumen 的 Job 基类中并没有使用 Illuminate\Foundation\Bus\Dispatchable 这个 trait,而是直接使用 Illuminate\Bus\Queueable 中的 onQueue() 方法。
那么现在就很清楚了,我们的 Job 类使用了 Illuminate\Bus\Queueable 这个 trait,所以需要在 Job 类上调用这个 onQueue() 方法。
$job = new XXXJob(); dispatch($job->onQueue('queue-name'));
当我们在开启队列的时候:
php artisan queue:work --queue=emails
这里指定的队列名 emails 和 dispatch 时指定的队列名保持一致即可。
总结
您可能感兴趣的文章:
Das obige ist der detaillierte Inhalt vonTutorial zur grundlegendsten Bedienung der Queue in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Die neuesten Versionen von Laravel 9 und CodeIgniter 4 bieten aktualisierte Funktionen und Verbesserungen. Laravel9 übernimmt die MVC-Architektur und bietet Funktionen wie Datenbankmigration, Authentifizierung und Template-Engine. CodeIgniter4 nutzt die HMVC-Architektur, um Routing, ORM und Caching bereitzustellen. In Bezug auf die Leistung sorgen das auf Dienstanbietern basierende Designmuster von Laravel9 und das leichte Framework von CodeIgniter4 für eine hervorragende Leistung. In praktischen Anwendungen eignet sich Laravel9 für komplexe Projekte, die Flexibilität und leistungsstarke Funktionen erfordern, während CodeIgniter4 für schnelle Entwicklung und kleine Anwendungen geeignet ist.

Laravel – Artisan Commands – Laravel 5.7 bietet eine neue Möglichkeit, neue Befehle zu behandeln und zu testen. Es enthält eine neue Funktion zum Testen von Handwerkerbefehlen und die Demonstration wird unten erwähnt?

Vergleichen Sie die Datenverarbeitungsfunktionen von Laravel und CodeIgniter: ORM: Laravel verwendet EloquentORM, das eine relationale Klassen-Objekt-Zuordnung bereitstellt, während CodeIgniter ActiveRecord verwendet, um das Datenbankmodell als Unterklasse von PHP-Klassen darzustellen. Abfrage-Builder: Laravel verfügt über eine flexible verkettete Abfrage-API, während der Abfrage-Builder von CodeIgniter einfacher und Array-basiert ist. Datenvalidierung: Laravel bietet eine Validator-Klasse, die benutzerdefinierte Validierungsregeln unterstützt, während CodeIgniter über weniger integrierte Validierungsfunktionen verfügt und eine manuelle Codierung benutzerdefinierter Regeln erfordert. Praxisfall: Beispiel einer Benutzerregistrierung zeigt Lar

BitgetLaunchpool ist eine dynamische Plattform, die für alle Kryptowährungsbegeisterten entwickelt wurde. BitgetLaunchpool zeichnet sich durch sein einzigartiges Angebot aus. Hier können Sie Ihre Token einsetzen, um weitere Belohnungen freizuschalten, darunter Airdrops, hohe Renditen und einen großzügigen Preispool, der nur frühen Teilnehmern vorbehalten ist. Was ist BitgetLaunchpool? BitgetLaunchpool ist eine Kryptowährungsplattform, auf der Token zu benutzerfreundlichen Bedingungen eingesetzt und verdient werden können. Durch die Investition von BGB oder anderen Token in Launchpool haben Benutzer die Möglichkeit, kostenlose Airdrops und Einnahmen zu erhalten und an großzügigen Bonuspools teilzunehmen. Die Einnahmen aus verpfändeten Vermögenswerten werden innerhalb von T+1 Stunden berechnet und die Belohnungen basieren darauf

Für Anfänger bietet CodeIgniter eine sanftere Lernkurve und weniger Funktionen, deckt aber die Grundbedürfnisse ab. Laravel bietet einen größeren Funktionsumfang, weist jedoch eine etwas steilere Lernkurve auf. In Bezug auf die Leistung schneiden sowohl Laravel als auch CodeIgniter gut ab. Laravel verfügt über eine umfangreichere Dokumentation und aktive Community-Unterstützung, während CodeIgniter einfacher und leichtgewichtiger ist und über starke Sicherheitsfunktionen verfügt. Im praktischen Fall der Erstellung einer Blogging-Anwendung vereinfacht EloquentORM von Laravel die Datenmanipulation, während CodeIgniter mehr manuelle Konfiguration erfordert.

Bei der Auswahl eines Frameworks für große Projekte haben Laravel und CodeIgniter jeweils ihre eigenen Vorteile. Laravel ist für Anwendungen auf Unternehmensebene konzipiert und bietet modularen Aufbau, Abhängigkeitsinjektion und einen leistungsstarken Funktionsumfang. CodeIgniter ist ein leichtes Framework, das sich eher für kleine bis mittelgroße Projekte eignet und Wert auf Geschwindigkeit und Benutzerfreundlichkeit legt. Für große Projekte mit komplexen Anforderungen und einer großen Anzahl von Benutzern sind die Leistung und Skalierbarkeit von Laravel besser geeignet. Für einfache Projekte oder Situationen mit begrenzten Ressourcen sind die leichten und schnellen Entwicklungsfunktionen von CodeIgniter idealer.

Für kleine Projekte eignet sich Laravel, für größere Projekte, die starke Funktionalität und Sicherheit erfordern. CodeIgniter eignet sich für sehr kleine Projekte, die geringes Gewicht und Benutzerfreundlichkeit erfordern.

Die Microservice-Architektur nutzt PHP-Frameworks (wie Symfony und Laravel) zur Implementierung von Microservices und folgt RESTful-Prinzipien und Standarddatenformaten zum Entwerfen von APIs. Microservices kommunizieren über Nachrichtenwarteschlangen, HTTP-Anfragen oder gRPC und nutzen Tools wie Prometheus und ELKStack zur Überwachung und Fehlerbehebung.
