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',/*在數(shù)據(jù)庫的配置中有定義數(shù)據(jù)表前綴為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 taches de file d'attente
php artisan make:job CollectionBook
4. Poussez les taches 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 taches 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 taches 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 tache 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 taches 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 taches 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?!