Utilisez le superviseur pour surveiller les travaux dans la file d'attente,
php artisan queue:listen --timeout=0
Utilisation
php artisan queue:failed-table
L'enregistrement de la file d'attente ayant échoué a été établi, mais la situation actuelle est que celui qui a échoué est toujours exécuté à plusieurs reprises et n'est pas écrit dans failed_job
Dans la documentation Laravel
php artisan queue:listen connection-name --tries=3
À quoi fait référence le nom de connexion ?
php artisan queue:listen --timeout=0 --tries=3, erreur d'exécution de la file d'attente
exception 'Swift_TransportException' with message 'Expected response code 250 but got code "", with message ""'
Comment résoudre ces problèmes ?
Vous pouvez choisir parmi une variété de services de file d'attente dans Laravel, les plus courants sont Redis et Beanstalk. Puisque Redis est une simple base de données, les données sont complètement transparentes, il sera donc plus facile de comprendre si Redis est utilisé comme objet d'explication ici. .
Les méthodes de démarrage de file d'attente dans Laravel incluent
queue:listen
etqueue:work
, oùqueue:work
signifie exécuter le travail suivant séparément. différence Veuillez voir : la différence entre queue:listen et queue:work --daemon.queue:listen
est également implémenté en interne en appelant encore et encorequeue:work
. Examinons maintenant la commandework
.queue:listen
和queue:work
, 其中queue:work
表示单独运行下一个job. 关于区别请看:queue:listen 和 queue:work --daemon 的区别 。queue:listen
内部也是一次次的调用queue:work
实现的,现在我们来看work
命令。在
IlluminateQueueConsoleWorkCommand
中是不是看见了我们熟悉的fire
方法?对就是它。继续追,调用
runWork
方式查找job并且执行.这里有一个daemon
选项, 表示是否作为守护运行。直接将daemon认为false(因为daemon其实就是一个while(true) ):joy:。看到
runWork
其实是调用的IlluminateQueueWorker::pop
方法到了最终执行job的位置(删掉了空行和注释,因为我要来上蹩脚的中文注释了.(逃 ):
恩,差不多就是这么回事了。
你那个抛出来的
Avez-vous vu la méthodeSwift_TransportException
是发送邮件程序swiftmailer
fire
familière dansIlluminateQueueConsoleWorkCommand
? Oui c'est ça. Continuez à courir,Appelez la méthode
runWork
pour trouver le travail et l'exécuter. Il y a ici une optiondaemon
, indiquant s'il faut s'exécuter en tant que démon. Considérez directement le démon comme faux (car le démon est en fait un while(true)) :joy:. 🎜 🎜Voyez querunWork
appelle en fait la méthodeIlluminateQueueWorker::pop
🎜 rrreee 🎜Arrivé à la position finale d'exécution du travail (supprimé les lignes vides et les commentaires, car je vais écrire des commentaires chinois merdiques. (Escape):🎜 rrreee 🎜Eh bien, c’est à peu près tout. 🎜 🎜LaSwift_TransportException
que vous avez lancée était une erreur générée par le programme d'envoi d'e-mailsswiftmailer
🎜Dans la configuration des connexions dans config/queue.php, sync, beanstalkd, sqs, etc. sont le nom de la connexion.