Laravel5.5队列踩坑日记

环境

laravel5.5 使用database实现队列发送邮件

进程

php artisan queue:listen --tries=3 --timeout=900  >> /var/log/artisan.log &

问题

当修改env文件的mail的配置项密码的时候,执行了以下的命令

php artisan config:clear
php artisan cache:clear

邮件队列的邮件没有发送出去,报了邮件密码认证错误,查了一下需要把config:cache起来

php artisan config:cache

邮件确实发送出去了,但是有个小问题,我在filesystem里面使用了一个变量(date(‘Ymd’))
Laravel5.5队列踩坑日记
我发现他在上传使用

Laravel5.5队列踩坑日记

使用tinker查看了此变量发现没有使用今天的日期,却使用了当时的config:cache的日期

要实现这样的效果,就不能使用

php artisan config:cache

后来我发现我重启队列的进程就可以了,laravel5.5的cache还是要去看下底层的逻辑代码

本作品采用《CC 协议》,转载必须注明作者和本文链接
打不死的小强
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 7

filesystem 这里使用变量当然不太对啊! 你 php artisan config:cache 的时候, 配置项已经缓存起来了, 后续调用的时候当然是直接从缓存里面取,而不是根据时间实时计算。

你这里缓存配置项是因为你的邮件密码需要从缓存里面取,你缓存了之后 filesystem 配置项自然也被缓存起来了,你又希望每次调用的时候不从缓存里面取。 你要么不 php artisan config:cache 都不缓存,要么 php artisan config:cache 然后都用缓存。感觉你这一块真的很矛盾,甚至我怀疑你自己都不知道自己在干什么。

最后 disk 明显是磁盘的意思, 一般我都是用来区分不同的文件系统,比如 oss minio local 这样,你这个区分文件夹感觉不应该在 disk 这里区分。

8个月前 评论
打不死的小强 (楼主) 8个月前
徵羽宫 (作者) 8个月前

artisan config:cache 就会生产 bootstrap/cache/config.php ,以后配置只读这个文件。

你原本配置是: root => date("Ymd") 就会变成: root => "2030-8-10"

也就是动态变静态字符串。

其次: 不用 config cache就行了,额 这已经是破坏框架了吧。

8个月前 评论

在队列里面就算你不用 config:cache 你现在这样写是有问题的

因为队列只会在启动的时候去加载配置 你在配置里面用动态参数是不合理的

8个月前 评论

。。。。。。。

8个月前 评论
nff93

这个 root 只定义根目录,日期在每次写文件的时候传递给 path

8个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!