Heim  >  Artikel  >  PHP-Framework  >  Beispiele zur Erläuterung der einfachen Verwendung von Laravel-Warteschlangen

Beispiele zur Erläuterung der einfachen Verwendung von Laravel-Warteschlangen

WBOY
WBOYnach vorne
2022-02-25 18:01:452699Durchsuche

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.

Beispiele zur Erläuterung der einfachen Verwendung von Laravel-Warteschlangen

【Verwandte Empfehlung: Laravel-Lern-Tutorial

In diesem Artikel wird die Verwendung von Warteschlangen in Laravel vorgestellt und erläutert, warum Warteschlangen verwendet werden

Wann werden Warteschlangen verwendet?

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:

1. Konfigurieren Sie die Warteschlangenkonfigurationsdatei in config/queue.php. Sie können hier die Synchronisierungsverarbeitung auswählen ist wie folgt.

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

Die Aufgabenklasse der Warteschlange befindet sich im Verzeichnis app/Jobs/

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.

Supervisor konfigurieren

Supervisor-Konfigurationsdateien werden im Allgemeinen im Verzeichnis /etc/supervisor/conf.d abgelegt. In diesem Verzeichnis können Sie beliebig viele Konfigurationsdateien erstellen, um dem Supervisor mitzuteilen, wie er Ihre Prozesse überwachen soll. Zum Beispiel erstellen wir eine laravel-worker.conf, um einen queue:work-Prozess zu starten und zu überwachen:

use App\Jobs\SaveBusLine;
use Carbon\Carbon;
/***************** 队列操作 start *******************/
SaveBusLine::dispatch($arrayData)->delay(Carbon::now()->addMinute(1));
/***************** 队列操作 end *******************/

Der Befehl numprocs in diesem Beispiel fordert den Supervisor auf, 8 queue:work-Prozesse auszuführen und zu überwachen und sie neu zu starten, wenn sie fehlschlagen . Natürlich müssen Sie den Befehl queue:work redis command ändern, um den Warteschlangentreiber Ihrer Wahl anzuzeigen. Sie müssen auch den Ausführungsbenutzer user = ändern. Informationen zur Verwendung finden Sie in der offiziellen Dokumentation des Supervisors.

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 supervisor

Fü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.log

6. 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen