按照官方文档的操作
implements ShouldQueue
,然后use Queueable
,配置文件也改了,QUEUE_CONNECTION=redis
,但是就是不执行,邮件一个都发不出去,但是使用QUEUE_CONNECTION=sync
同步就可以。
我检查了邮箱配置等,发现没问题,而且使用QUEUE_CONNECTION=sync
就可以成功,执行过程中也没有报错,让我百思不得其姐,既然得不到姐,我寻思找谷哥,度娘问问呗,获取他们知道呢。搜 laravel notification mail redis 不执行
发现很少有匹配答案,还是得不到姐。于是我回来先检查一下问题,打开redis-cli
,然后执行 keys *
列出所有的键,发现里面有queues:default
和 queues:default:delayed
,看来队列是有的,然后 lrange notify.mail:delayed 0 -1
发现是个空的。这就奇怪了,如果失败,应该在里面啊,如果成功,那我的邮件穿越了?怀着种种疑问,我又打开了laravel的官方文档,经过一番阅读,终于找到了答案。
原来,这个队列处理进程是需要去开启的!!!执行这条命令:php artisan queue:work
! 再去发邮件,便听到了清脆的提示音!鸡冻!
其实notification关于mail使用queue异步处理的部分没有提到这个问题,如果你没有用过laravel的队列,没有看redis队列那部分的文档,你可能不会知道还要用命令启动!!!
然后文档中还介绍了如何让他后台一直运行的方法,我看太复杂了,我就直接用nohup
(可以参考 Linux后台运行nohup)了。
我要补充的文档中都有,想要详细了解这个命令的,请移步:https://laravel.com/docs/5.8/queues#running-the-queue-worker
viencoding.com版权所有,允许转载,但转载请注明出处和原文链接: https://viencoding.com/article/123