在Laravel

时间:2017-08-18 20:22:02

标签: php laravel queue schedule listen

我想实现一个队列,用于在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。

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

不确定您使用的是哪个版本的Laravel,但我怀疑它是5.2或更早版本。 您不需要每分钟运行一次,它会继续运行直到手动停止。

来自Laravel 5.2文档:

  

请注意,一旦此任务启动,它将继续运行,直到手动停止。您可以使用Supervisor等进程监视器来确保队列侦听器不会停止运行。

所以也许你想看看Supervisor

此外,如果这有用,你可以链接到$ schedule, - > everyFiveMinutes()。还有其他几种方法可供使用。 Laravel Scheduling