Problem mit der asynchronen Warteschlange von Laravel5.1
给我你的怀抱
给我你的怀抱 2017-05-16 16:53:47
0
1
886

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.


Dank der Antworten der Studierenden im 1. Stock wurde das oben genannte Problem gelöst. Nun kommt die zweite Frage

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!

给我你的怀抱
给我你的怀抱

Antworte allen(1)
为情所困

.env配置了吗

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage