为什么Laravel Horizo​​n执行队列命令的速度比简单的工匠队列要快得多?

时间:2019-11-20 10:21:06

标签: laravel performance queue laravel-horizon

我正在排队一个命令(通过另一个命令),该命令如果由queue:work处理,则需要大约1分钟才能执行,但是如果通过工匠视野运行,则仅需要15秒。 我已经验证并且代码可以正确执行-此排队命令将文件中的数据加载到DB中,并且我确认在两种情况下数据均正确加载。

$ php artisan integ:load ctlem                                                    
Job for files C_afi1411T.txt e C_afi1411V.txt created.

$ php artisan queue:work --queue=data_load --tries=3 --timeout=0
[2019-11-20 09:49:18][1] Processing: Illuminate\Foundation\Console\QueuedCommand
[2019-11-20 09:50:16][1] Processed:  Illuminate\Foundation\Console\QueuedCommand
^C

$ php artisan integ:load ctlem
Job for files C_afi1411T.txt e C_afi1411V.txt created.

$ php artisan horizon
Horizon started successfully.
[2019-11-20 09:51:10][2] Processing: Illuminate\Foundation\Console\QueuedCommand
[2019-11-20 09:51:25][2] Processed:  Illuminate\Foundation\Console\QueuedCommand
^CShutting down...
$

我还记录了在队列命令本身内部调用“重载”功能前后的时间,并且该日志确认了该时间,即,它与任何设置和拆卸活动均无关。 >

很高兴在需要时提供更多详细信息。 知道为什么会有这种区别吗?

1 个答案:

答案 0 :(得分:0)

好,所以我已经确定了造成这种差异的原因:XDebug。 尽管我没有积极进行调试,但是在php.ini中禁用xdebug可以显着加快“工匠队列:工作”的速度。

虽然这显然是意料之中的,但对我来说,运行“ artisan地平线”以某种方式绕过xdebug和“ artisan quque:work”这一事实并不是新鲜事。

无论如何,也许这可以帮助未来的开发人员...