Mit der kontinuierlichen Entwicklung der Internetbranche werden unsere Websites immer komplexer und auch die Anzahl der Besuche steigt. Bei hoher Parallelität ist die Verarbeitung einer großen Anzahl zeitaufwändiger Aufgaben eine sehr schwierige Aufgabe, die dazu führt, dass unser Unternehmen stecken bleibt und blockiert. Um dieses Problem zu lösen, stellt Laravel eine Warteschlangenfunktion bereit, mit der einige asynchrone und aufschiebbare Aufgaben bearbeitet werden können, damit Benutzer nicht das Gefühl haben, festzustecken. Als nächstes lernen wir, wie man die Laravel-Warteschlange verwendet.
1. Warteschlange installieren
#1. Warteschlangenpaket installierenIn Laravel wird die Warteschlange in das Laravel-Warteschlangenarbeitspaket eingefügt, das wir verwenden können Composer zum Installieren des Pakets: composer require illuminate/queue2. Warteschlangenanbieter hinzufügen Laravel unterstützt mehrere Warteschlangen-Backends, einschließlich Datenbank, Redis , Beanstalkd usw. Wir müssen den Warteschlangenanbieter in config/queue.php konfigurieren. Zum Beispiel können wir den Redis-Warteschlangenanbieter verwenden: 'connections' => ['redis' => [ 'driver' => 'redis', 'connection' => 'default', 'queue' => 'default', 'retry_after' => 90, 'block_for' => null, ],
Queue ist für die Verarbeitung lang laufender Aufgaben konzipiert. Dabei kann es sich um jede Aufgabe oder jeden Befehl handeln. Wir können die Befehlszeile verwenden, um eine neue Warteschlangenaufgabe zu generieren:
php artisan make:job SendEmail
Die generierte Warteschlangenaufgabenklasse wird manuell im Verzeichnis app/Jobs abgelegt Die generierte SendEmail-Aufgabenklasse ist eine Basisklasse, die wie folgt aussieht:
namespace AppJobs;
use IlluminateBusQueueable;# 🎜 🎜#use IlluminateContractsQueueShouldQueue;
use IlluminateFoundationBusDispatchable;use IlluminateQueueInteractsWithQueue;
use IlluminateQueueSerializesModels;
#🎜🎜 #class SendEmail ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; /** * Create a new job instance. * * @return void */ public function __construct() { // } /** * Execute the job. * * @return void */ public function handle() { // }
Wir können die spezifische Implementierungslogik der Aufgabe in die handle()-Methode schreiben.
# 🎜🎜# Wir können die Verzögerung und den Namen der Warteschlange auch mithilfe der Methoden „delay()“ und „onQueue()“ der Warteschlange angeben.
Zum Beispiel: Schieben Sie die Aufgabe in die Warteschlange mit dem Namen „E-Mails“ und verarbeiten Sie sie nach 10 Sekunden:
SendEmail::dispatch()->onQueue('emails ' )->delay(now()->addSeconds(10));
4. Warteschlange ausführen
Wir haben die Aufgabe in die Warteschlange verschoben, jetzt brauchen wir Führen Sie die Warteschlange aus und verarbeiten Sie Aufgaben. In Laravel können wir den Artisan-Befehl verwenden, um den Warteschlangenprozessor zu starten:
php artisan queue:work
Standardmäßig verwendet der Warteschlangenprozessor den Namen „default“ Queue Anbieter. Mit der Option „--queue“ können wir die Warteschlange für die Prozessorverarbeitung festlegen. Um beispielsweise die E-Mail-Warteschlange zu verarbeiten:
php artisan queue:work --queue=emails
Wenn Sie alle verfügbaren Prozessoren verwenden möchten, um die Warteschlange der Reihe nach zu verarbeiten, Sie können die Option „- -daemon“ verwenden. Dadurch wird sichergestellt, dass der Betrieb des Prozessors nicht unterbrochen wird, selbst wenn ein Prozessor ausfällt.
php artisan queue:work --daemon
Es gibt viele andere Optionen für Warteschlangenprozessoren. Sie können den Befehl php artisan queue:work --help verwenden, um alle Optionen und zugehörigen Informationen anzuzeigen.
5. Zusammenfassung
Mit den oben genannten Schritten können wir eine große Anzahl zeitaufwändiger Aufgaben problemlos bewältigen und so die Effizienz verbessern und Reaktionsgeschwindigkeit der Anwendung. Wenn Sie mehr Details und Optionen zu Warteschlangen erfahren möchten, schauen Sie sich die offizielle Laravel-Dokumentation an.
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!