Heim > Artikel > PHP-Framework > Beispiele zur Erläuterung der einfachen Verwendung von Laravel-Warteschlangen
Dieser Artikel vermittelt Ihnen das relevante Wissen über Laravel. Er stellt vor allem Laravel-Warteschlangen vor, unter welchen Umständen Warteschlangen verwendet werden, und ich hoffe, dass er für alle hilfreich ist.
【Verwandte Empfehlung: Laravel-Lern-Tutorial】
In diesem Artikel wird die Verwendung von Warteschlangen in Laravel vorgestellt und erläutert, warum Warteschlangen verwendet werden
Zeitaufwändig, z. B. das Hochladen einer Datei und das anschließende Durchführen einiger Formatkonvertierungen usw.
Wenn Sie die Zustellrate sicherstellen müssen, z. B. beim Senden einer Textnachricht, weil Sie die API einer anderen Person aufrufen müssen, besteht immer die Möglichkeit eines Fehlers. Um die Zustellung sicherzustellen, ist daher ein erneuter Versuch unerlässlich.
Zeichnen Sie den Verwendungsprozess auf:
Datenbank
Erstellen Sie eine Datentabellenspeicheraufgabe und führen Sie die Datenmigration aus, nachdem Sie den Befehl artisan ausgeführt haben
php artisan queue:table php artisan migrate
Redis
Um den Redis-Warteschlangentreiber verwenden zu können, müssen Sie die Redis-Datenbankverbindung in Ihrer Konfigurationsdatei config/ konfigurieren. Datenbank.php.
Wenn Ihre Redis-Warteschlangenverbindung einen Redis-Cluster verwendet, muss Ihr Warteschlangenname das Schlüssel-Hash-Tag enthalten. Damit soll sichergestellt werden, dass alle Redis-Schlüssel für eine bestimmte Warteschlange im selben Hash platziert werden:
'redis' => [ 'driver' => 'redis', 'connection' => 'default', 'queue' => 'default', 'retry_after' => 90, ],
2. Erstellen Sie die Aufgabenklasse
php artisan make: Job SaveBusLine: Ändern Sie die Datei wie folgt: Rufen Sie die Warteschlangenmethode im Controller oder im Lager auf:
Supervisor Es handelt sich um eine Prozessüberwachungssoftware auf dem Linux-Betriebssystem, die die Befehle queue:listen oder queue:work automatisch neu startet, nachdem sie fehlgeschlagen sind. Um Supervisor unter Ubuntu zu installieren, können Sie den folgenden Befehl verwenden:namespace App\Jobs; use App\Http\Repository\BusRepository; use Illuminate\Bus\Queueable; use Illuminate\Queue\SerializesModels; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; class SaveBusLine implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; /** * 任务最大尝试次数。 * * @var int */ public $tries = 3; /** * 任务运行的超时时间。 * * @var int */ public $timeout = 60; private $datum; /** * Create a new job instance. * @param array|object $datum * * @return void */ public function __construct($datum) { $this->datum = $datum; } /** * Execute the job. * * @return void */ public function handle() { BusRepository::getInstent()->updateBusLine($this->datum); } }{Tipp} Wenn die manuelle Konfiguration von Supervisor etwas überwältigend klingt, können Sie die Verwendung von Laravel Forge in Betracht ziehen, das Supervisor automatisch für Ihr Laravel-Projekt installieren und konfigurieren kann.
use App\Jobs\SaveBusLine; use Carbon\Carbon; /***************** 队列操作 start *******************/ SaveBusLine::dispatch($arrayData)->delay(Carbon::now()->addMinute(1)); /***************** 队列操作 end *******************/
5. Behandeln Sie fehlgeschlagene Aufgaben
Manchmal schlagen Aufgaben in Ihrer Warteschlange fehl. Machen Sie sich keine Sorgen, es wird nicht immer alles reibungslos laufen. Laravel verfügt über eine praktische integrierte Möglichkeit, die maximale Anzahl an Wiederholungen einer Aufgabe anzugeben. Wenn eine Aufgabe diese Anzahl an Wiederholungsversuchen überschreitet, wird sie in die Datentabelle failed_jobs eingefügt. Um eine Migrationsdatei für die Tabelle failed_jobs zu erstellen, können Sie den Befehl queue:failed-table verwenden und dann den Befehl migrate Artisan verwenden, um die Tabelle failed_jobs zu generieren:sudo apt-get install supervisorFühren Sie dann den Warteschlangenprozessor aus und rufen Sie den Warteschlangenarbeiter auf. Sie sollten beim Befehl den Parameter --tries übergeben. Gibt die maximale Anzahl von Wiederholungsversuchen für die Aufgabe an. Wenn nicht angegeben, wird die Aufgabe für immer wiederholt:
[program:laravel-worker] process_name=%(program_name)s_%(process_num)02d command=php ~/laravel/artisan queue:work redis --sleep=3 --tries=3 autostart=true autorestart=true user=lisgroup numprocs=8 redirect_stderr=true stdout_logfile=/home/lisgroup/logs/worker.log6. Fehlgeschlagene Aufgaben löschen
Sie können die fehlgeschlagene Methode direkt in der Aufgabenklasse definieren, die die Löschlogik der Aufgabe ausführen kann, wenn die Aufgabe fehlschlägt. Dieser Ort eignet sich perfekt, um dem Benutzer eine Warnung zu senden oder den Vorgang der Aufgabenausführung zurückzusetzen. Ausnahmeinformationen, die dazu führen, dass die Aufgabe fehlschlägt, werden an die fehlgeschlagene Methode übergeben:
sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start laravel-worker:*[Verwandte Empfehlungen:
Laravel-Video-Tutorial
]Das obige ist der detaillierte Inhalt vonBeispiele zur Erläuterung der einfachen Verwendung von Laravel-Warteschlangen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!