【问题标题】:Laravel - Mails skip the queue systemLaravel - 邮件跳过队列系统
【发布时间】:2019-04-21 00:24:23
【问题描述】:

我正在尝试将队列系统添加到我的 Laravel 应用程序(本地开发)。我在每个文件中设置了这两个参数:
queue.php -> 'default' => env('QUEUE_DRIVER', 'database')
.env -> QUEUE_DRIVER=数据库

我已经在我的数据库中创建了一个迁移的我的两个表作业和 failed_jobs。

我已经使用“php artisan queue:work”启动了队列系统。

我现在正尝试通过队列系统发送邮件,例如:
"Mail::to($email)->queue(new PasswordUpdatedMail($name));"

邮件是由队列系统发送的,但永远不会由队列系统发送,它总是同步发送,因为下一个自动索引总是“1”,当我在 PasswordUpdatedMail 的构建函数中放置一个睡眠定时器时,浏览器正在等待定时器,之后邮件发送,浏览器写入成功消息。

所以我的邮件跳过了队列系统... 我一直在寻找教程和论坛,但没有找到问题的答案。

感谢您的帮助!

【问题讨论】:

  • 其他排队任务是否有效(如排队作业或排队事件侦听器)?你有没有使用过php artisan config:cache 命令?如果是这样,在您再次运行该命令之前,您的配置更改将不会生效。您可以使用php artisan config:clear 清除配置缓存。
  • 非常感谢 Namoshek !这是配置缓存...好吧,如果我更新 env 文件,我必须清除配置缓存!已注明。
  • 是的,但如果您只是更改正常配置。缓存配置的作用是将所有配置文件拉到一起,评估其中的任何函数,并将结果存储在单个文件中。如果这个缓存文件存在,框架将不会加载任何其他配置文件。这样做是为了减少执行期间加载的文件数量,从而提高性能。
  • 好的我明白了,谢谢你的解释:)

标签: database laravel email queue


【解决方案1】:

Namoshek 找到了解决方案。只需在更新 .env 文件后执行“php artisan config:cache”即可! 谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 2010-12-13
    • 2011-02-23
    相关资源
    最近更新 更多