如何运行Laravel队列:工作在共享主机没有重叠我正在cronjob中使用此代码,但由于重叠命令,这会占用过多的CPU资源。最佳方法是什么?
/usr/local/bin/php /home/electro/public_html/artisan queue:work
jjjwad0x1#
高CPU问题是因为工作线程每次检查队列中的作业时都要加载整个框架而引起的。
您可以用途:
php artisan queue:work --daemon
在您的情况下:
/usr/local/bin/php /home/electro/public_html/artisan queue:work --daemon这将加载框架一次,作业的检查/处理发生在while循环中,这让CPU松了一口气。
/usr/local/bin/php /home/electro/public_html/artisan queue:work --daemon
ubby3x7f2#
但人们到现在还在寻找答案在app\Console\Kernel.php上创建一个条目
$schedule->command('queue:work --stop-when-empty') ->everyMinute() ->withoutOverlapping();
这将每分钟启动一个队列工作器,但当队列被清空时停止。如果有很多作业(超过一分钟),则-〉withoutOverlapping将阻止调度器启动另一个工作器。
2条答案
按热度按时间jjjwad0x1#
高CPU问题是因为工作线程每次检查队列中的作业时都要加载整个框架而引起的。
您可以用途:
php artisan queue:work --daemon
在您的情况下:
/usr/local/bin/php /home/electro/public_html/artisan queue:work --daemon
这将加载框架一次,作业的检查/处理发生在while循环中,这让CPU松了一口气。
ubby3x7f2#
但人们到现在还在寻找答案
在app\Console\Kernel.php上创建一个条目
这将每分钟启动一个队列工作器,但当队列被清空时停止。如果有很多作业(超过一分钟),则-〉withoutOverlapping将阻止调度器启动另一个工作器。