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 ?
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 !
Le .env est-il configuré ?