我想实现一个队列,用于在Laravel中发送电子邮件。我的队列工作正常,但我担心效率。这些是我的设置:
我创建了jobs表并设置了.env文件,以便将队列与我的本地数据库一起使用。
我在服务器上设置了这个crontab:
* * * * * php /var/www/imagine.dev/artisan schedule:run >> /dev/null 2>&1
并在app \ Conosle \ Kernel.php中设置了一个时间表,所以我不必手动输入'队列:listen'每次通过控制台。
$schedule->command('queue:listen');
现在回答我的问题。我想知道这是否有效?我担心有队列:在后台运行,一直在消耗cpu和内存。
我一直在尝试只运行队列:每5分钟听一次,然后用
让它进入睡眠状态$schedule->command('queue:listen --sleep 300');
但是,我不确定这是否是最佳方法。
我尝试的另一件事是使用' queue:work',但这只能一次处理一个队列。
理想情况下,我想要一种方法,每5分钟处理一次所有队列,避免不断使用内存和CPU。
最好的方法是什么?
答案 0 :(得分:0)
不确定您使用的是哪个版本的Laravel,但我怀疑它是5.2或更早版本。 您不需要每分钟运行一次,它会继续运行直到手动停止。
来自Laravel 5.2文档:
请注意,一旦此任务启动,它将继续运行,直到手动停止。您可以使用Supervisor等进程监视器来确保队列侦听器不会停止运行。
所以也许你想看看Supervisor
此外,如果这有用,你可以链接到$ schedule, - > everyFiveMinutes()。还有其他几种方法可供使用。 Laravel Scheduling