problème de file d'attente asynchrone laravel5.1
给我你的怀抱
给我你的怀抱 2017-05-16 16:53:47
0
1
880

1. Modifiez la configuration dans la file d'attente du dossier config pour :

'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. Créez une table de file d'attente

php artisan queue:table
php artisan migrate

3. Créer une classe de tâches de file d'attente

php artisan make:job CollectionBook

4. Poussez les tâches vers la file d'attente

$job = (new CollectionBook(3565))->onQueue('collectionbook')->delay(60);
dispatch($job);

5. Surveillance en arrière-plan

php artisan queue:work --queue=collectionbook --daemon --sleep=3 --tries=3

La page d'exécution des tâches push
J'ai constaté que la file d'attente était exécutée de manière synchrone et n'était pas écrite dans la table des tâches de file d'attente. Comment résoudre ce problème ?


Grâce aux réponses des étudiants du 1er étage, le problème ci-dessus a été résolu. Reste maintenant la deuxième question

.

Exécuter dans le répertoire racine du site Web (/home/wwwroot/kshuba/)

php artisan queue:work --queue=collectionbook --daemon --sleep=3 --tries=3

La tâche de file d'attente dans la base de données est consommée
Si vous vérifiez ps artisan à ce moment, vous verrez que le processus est :

root 2287 2144 9 18:30 pts/0 00:00:02 php artisan queue:work --queue=collectionbook --daemon --sleep=3 --tries=3

Mais lorsque j'ai déconnecté le client ssh, j'ai constaté que le processus avait disparu
À ce moment-là, j'ai utilisé le superviseur pour surveiller le processus

[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

Démarrer le superviseur et la requête
Le résultat est la surveillance

laravel-worker-collectionbook RUNNING pid 2271, disponibilité 0:00:02

ps artisan verra le processus comme :

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

Le problème est que les tâches de file d'attente dans la base de données de requêtes n'ont pas été consommées
De plus, si vous l'exécutez dans le répertoire racine du serveur

php /home/wwwroot/kshuba/artisan queue:work --queue=collectionbook --daemon --sleep=3 --tries=3

Les tâches en file d'attente ne peuvent pas non plus être consommées
Essayez de modifier la commande du superviseur comme suit :

php artisan queue:work --queue=collectionbook --sleep=3 --tries=3 --daemon

Il s'avère que l'état du superviseur> affiche : BACKOFF Quitté trop rapidement (le journal du processus peut contenir des détails)
La surveillance ne peut pas être démarrée. Comment le résoudre ?


Ma propre configuration est manquante -- le problème a été résolu !

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

répondre à tous(1)
为情所困

Le .env est-il configuré ?

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal