【问题标题】:Why does Laravel Horizon executes queued command much faster than a simple artisan queue:work?为什么 Laravel Horizo​​n 执行队列命令比简单的工匠队列:工作快得多?
【发布时间】:2019-11-20 10:21:06
【问题描述】:

我正在排队一个命令(通过另一个命令),如果由 queue:work 处理,执行大约需要 1 分钟,但如果通过 artisan horizo​​n 运行,只需要大约 15 秒。 我已经验证并且代码得到正确执行 - 这个排队的命令将数据从文件加载到数据库中,并且我已经确认数据在两种情况下都正确加载。

$ 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...
$

我还记录了调用队列命令本身内部的“重”函数之前和之后的时间,并且日志确认了时间,即它与任何设置和拆卸活动无关..

如果需要,很乐意提供更多详细信息。 任何想法为什么会出现这种差异?

【问题讨论】:

    标签: laravel performance queue laravel-horizon


    【解决方案1】:

    好的,所以我已经确定了造成这种差异的原因:XDebug。 虽然我没有主动调试,但在 php.ini 中禁用 xdebug 会显着加快“artisan queue:work”的速度。

    虽然这显然是意料之中的,但运行“artisan horizo​​n”以某种方式绕过 xdebug 而“artisan quque:work”却没有,这对我来说是新的。

    不管怎样,也许这对未来的开发者有帮助...

    【讨论】:

      猜你喜欢
      • 2021-11-04
      • 2018-07-25
      • 2014-11-10
      • 2020-04-19
      • 1970-01-01
      • 2018-06-20
      • 2018-05-29
      • 2021-11-28
      • 2019-10-18
      相关资源
      最近更新 更多