Heim > Artikel > PHP-Framework > Warteschlangen und Aufgabenplanung mit Laravel: Verbesserung der Anwendungsparallelität
Verwendung von Laravel für die Warteschlangenverarbeitung und Aufgabenplanung: Verbesserung der Anwendungsparallelität
Zusammenfassung:
Bei der Entwicklung von Webanwendungen müssen wir normalerweise verschiedene Hintergrundaufgaben erledigen, wie z. B. das Versenden von E-Mails, das Erstellen von Berichten oder die Verarbeitung großer Datenmengen. Diese Aufgaben können viel Zeit in Anspruch nehmen, und wenn wir sie direkt in den Anfrageverarbeitungsprozess einbinden, führt dies zu langsameren Antwortzeiten. Um die Parallelität unserer Anwendung zu verbessern, können wir die Funktionen zur Warteschlangenverarbeitung und Aufgabenplanung in Laravel verwenden.
1. Was ist Warteschlangenverarbeitung und Aufgabenplanung?
In Laravel ist die Warteschlange eine Möglichkeit, zeitaufwändige Aufgaben auf die Hintergrundverarbeitung zu verschieben. Bei der Aufgabenplanung handelt es sich um eine Methode, Aufgaben so anzuordnen, dass sie zu einem bestimmten Zeitpunkt oder nach bestimmten Regeln ausgeführt werden. Mithilfe der Warteschlangenverarbeitung und der Aufgabenplanung können Aufgaben in die Nachrichtenwarteschlange gestellt und vom Hintergrundprozess asynchron verarbeitet werden, wodurch die Wartezeit für Benutzeranforderungen verkürzt und die Parallelität der Anwendungen verbessert wird.
2. Warteschlangenverarbeitung konfigurieren
Installieren Sie den Warteschlangenverarbeitungstreiber
In Laravel können wir verschiedene Warteschlangenverarbeitungstreiber auswählen, z. B. Redis, Beanstalkd oder Datenbank. Über Konfigurationsdateien können wir Auswahlen und Einstellungen vornehmen. Beispielsweise können wir uns für die Verwendung des Redis-Treibers entscheiden, indem wir die Variable QUEUE_CONNECTION in der .env-Datei festlegen:
QUEUE_CONNECTION=redis
Eine Aufgabenklasse erstellen
In Laravel können wir bestimmte Aufgaben für die Warteschlangenverarbeitung definieren, indem wir eine Aufgabenklasse erstellen. Wir können Artisan-Befehle verwenden, um eine neue Aufgabenklasse zu erstellen, zum Beispiel können wir eine Aufgabe zum Senden von E-Mails erstellen:
php artisan make:job SendEmail
Dadurch wird eine SendEmail.php-Aufgabenklasse im Verzeichnis app/Jobs erstellt.
Warteschlangenverarbeitungslogik schreiben
In der Aufgabenklasse können wir eine spezifische Warteschlangenverarbeitungslogik definieren. In der SendEmail-Aufgabenklasse können wir beispielsweise die von Laravel bereitgestellte Mail-Klasse zum Senden von E-Mails verwenden:
<?php namespace AppJobs; use IlluminateBusQueueable; use IlluminateContractsQueueShouldQueue; use IlluminateFoundationBusDispatchable; use IlluminateQueueInteractsWithQueue; use IlluminateQueueSerializesModels; use IlluminateSupportFacadesMail; class SendEmail implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; protected $email; protected $subject; protected $body; public function __construct($email, $subject, $body) { $this->email = $email; $this->subject = $subject; $this->body = $body; } public function handle() { Mail::to($this->email)->send(new AppMailNotification($this->subject, $this->body)); } }
Queue-Aufgabenaufruf
Wenn wir E-Mails senden müssen, können wir den folgenden Code verwenden, um die SendEmail-Aufgabe hinzuzufügen die Warteschlange:
SendEmail::dispatch($email, $subject, $body);
Dadurch wird die SendEmail-Aufgabe zur Warteschlange hinzugefügt, damit sie vom Hintergrundprozess verarbeitet werden kann.
3. Aufgabenplanung
Laravel bietet auch einen Aufgabenplaner, der die Ausführung von Aufgaben nach einer bestimmten Zeit oder Regel anordnen kann. Wir können Artisan-Befehle verwenden, um Aufgabenpläne zu erstellen und zu verwalten.
Erstellen Sie eine Aufgabenplandatei.
Erstellen Sie eine neue Aufgabenplandatei mit dem folgenden Befehl:
php artisan make:console SendReport
Dadurch wird eine SendReport.php-Aufgabenplandatei im Verzeichnis app/Console/Commands erstellt.
Aufgabenplanungslogik schreiben
In der Aufgabenplanungsdatei können wir die spezifische Logik der Aufgabenplanung definieren. Beispielsweise können wir in der SendReport-Aufgabenplanungsdatei den Code zum Generieren des Berichts schreiben:
<?php namespace AppConsoleCommands; use IlluminateConsoleCommand; class SendReport extends Command { protected $signature = 'report:send'; protected $description = 'Send report'; public function __construct() { parent::__construct(); } public function handle() { // Generate and send report } }
Konfigurieren der Aufgabenplanungsstrategie
Wir können die Aufgabenplanungsstrategie in der Datei app/Console/Kernel.php konfigurieren. Beispielsweise können wir der Schedule-Methode den folgenden Code hinzufügen, um die SendReport-Aufgabe jeden Morgen um 8 Uhr zu planen:
protected function schedule(Schedule $schedule) { $schedule->command('report:send')->dailyAt('08:00'); }
Starten Sie den Aufgabenplaner.
Verwenden Sie den folgenden Befehl, um den Aufgabenplaner zu starten:
php artisan schedule:run
This folgt dem, was wir in der Zeitplanmethode getan haben. Regeln konfigurieren, um die Aufgabenplanung durchzuführen.
Fazit:
Die Verwendung von Laravel für die Warteschlangenverarbeitung und Aufgabenplanung kann die Parallelität Ihrer Anwendung effektiv verbessern. Indem wir zeitaufwändige Aufgaben zur Verarbeitung in den Hintergrund verlagern, können wir die Wartezeit für Benutzeranfragen verkürzen und das Benutzererlebnis verbessern. Die einfache Konfiguration und der flexible Aufruf von Warteschlangenverarbeitungs- und Aufgabenplanungsfunktionen ermöglichen uns eine einfache Integration in unsere Anwendungen.
Ich hoffe, dieser Artikel hilft Ihnen, die Warteschlangenverarbeitungs- und Aufgabenplanungsfunktionen von Laravel zu verstehen und zu nutzen.
Das obige ist der detaillierte Inhalt vonWarteschlangen und Aufgabenplanung mit Laravel: Verbesserung der Anwendungsparallelität. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!