1. Ändern Sie die Konfiguration in der Warteschlange im Konfigurationsordner wie folgt:
'default' => env('QUEUE_DRIVER', 'database'),
/*
|--------------------------------------------------------------------------
| Queue Connections
|--------------------------------------------------------------------------
|
| Here you may configure the connection information for each server that
| is used by your application. A default configuration has been added
| for each back-end shipped with Laravel. You are free to add more.
|
*/
'connections' => [
'sync' => [
'driver' => 'sync',
],
'database' => [
'driver' => 'database',
'table' => 'jobs',/*在数据库的配置中有定义数据表前缀为ksb_,这里不知是否需要补全前缀*/
'queue' => 'default',
'expire' => 60,
],
……………………
2. Erstellen Sie eine Warteschlangentabelle
php-Artisan-Warteschlange:Tabelle
php-Artisan-Migration
3. Erstellen Sie eine Warteschlangen-Aufgabenklasse
php artisan make:job CollectionBook
4. Aufgaben in die Warteschlange verschieben
$job = (new CollectionBook(3565))->onQueue('collectionbook')->delay(60);
dispatch($job);
5. Hintergrundüberwachung
php artisan queue:work --queue=collectionbook --daemon --sleep=3 --tries=3
Die Seite zum Ausführen von Push-Aufgaben
Ich habe festgestellt, dass die Warteschlange synchron ausgeführt wurde und nicht in die Aufgabentabelle der Warteschlange geschrieben wurde.
Im Stammverzeichnis der Website ausführen (/home/wwwroot/kshuba/)
php artisan queue:work --queue=collectionbook --daemon --sleep=3 --tries=3
Die Warteschlangenaufgabe in der Datenbank wird verbraucht
Wenn Sie zu diesem Zeitpunkt ps artisan überprüfen, werden Sie feststellen, dass der Prozess wie folgt lautet:
root 2287 2144 9 18:30 pts/0 00:00:02 php artisan queue:work --queue=collectionbook --daemon --sleep=3 --tries=3
Aber als ich den SSH-Client trennte, stellte ich fest, dass der Prozess verschwunden war
Zu diesem Zeitpunkt habe ich Supervisor verwendet, um den Prozess zu überwachen
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/wwwroot/kshuba/artisan queue:work --queue=collectionbook --sleep=3 --tries=3 --daemon
autostart=true
autorestart=true
user=forge
numprocs=8
redirect_stderr=true
Supervisor starten und abfragen
Das Ergebnis ist Überwachung
laravel-worker-collectionbook RUNNING pid 2271, Betriebszeit 0:00:02
ps artisan wird den Prozess wie folgt sehen:
root 2300 2144 9 18:30 pts/0 00:00:02 php /home/wwwroot/kshuba/artisan queue:work --queue=collectionbook --daemon --sleep=3 --tries=3
Das Problem besteht darin, dass die Warteschlangenaufgaben in der Abfragedatenbank nicht verbraucht wurden
Außerdem, wenn Sie sie im Stammverzeichnis des Servers ausführen
php /home/wwwroot/kshuba/artisan queue:work --queue=collectionbook --daemon --sleep=3 --tries=3
Warteschlangenaufgaben können ebenfalls nicht verbraucht werden
Versuchen Sie, den Befehl des Vorgesetzten zu ändern:
php artisan queue:work --queue=collectionbook --sleep=3 --tries=3 --daemon
Es wurde festgestellt, dass der Supervisor>-Status Folgendes anzeigt: BACKOFF Zu schnell beendet (Prozessprotokoll enthält möglicherweise Details)
Die Überwachung kann nicht gestartet werden.
Meine eigene Konfiguration fehlt – das Problem wurde gelöst!
.env配置了吗