【发布时间】:2020-02-25 06:38:14
【问题描述】:
我在 Laravel 队列系统中遇到了一个严重的问题,请帮我解决这个问题。
一旦我使用
将我的邮件排队$mailer = Mail::to($email_to)->queue(new ContactGeneral($data));
它存储到数据库中并从终端运行此命令 php artisan queue:listen 一旦我关闭我的终端它就可以正常工作,它不会监听我的队列。
为此,我在 kernem.php 文件中设置了一个计划,就像每分钟运行的那样
protected function schedule(Schedule $schedule){
$schedule->command('queue:listen')->everyMinute();
}
在 cronjob 中设置这一行并正常工作
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
问题是每分钟运行每分钟运行它不会杀死前一个进程并在下一分钟运行另一个进程它会减慢我的服务器速度
请您告诉我实现此功能的最佳方法是什么
提前致谢
【问题讨论】:
-
队列工作者必须在后台持续运行。 Laravel 建议使用
supervisor来执行此操作,docs 中有一个示例 -
不要使用
queue:listen作为调度器。而是按照文档安装Supervisor。 run queue & Supervisor
标签: php laravel laravel-queue laravel-jobs