laravel lumen 上的 hhvm artisan 命令很慢

Posted

技术标签:

【中文标题】laravel lumen 上的 hhvm artisan 命令很慢【英文标题】:hhvm artisan commands on laravel lumen is slow 【发布时间】:2015-09-11 16:02:55 【问题描述】:

有没有人认识到 Lumen 或 Laravel 的工匠很慢?

我想编写自己的 artisan 命令并像这样运行它:

hhvm artisan my:command --myparam=true

即使hhvm artisan 也需要 2 秒才能显示可用命令列表。

如果我像 hhvm -v Eval.Jit=false artisan 这样运行它,它就像标准 php,但我想拥有自己的命令并使用 JIT 来启动长时间运行的脚本。

我在 Ubuntu 14.04 上使用 hhvm 3.7.2。

是否需要在 ini 文件或其他配置中设置 Laravel/Lumen 以使用 JIT for CLI?

【问题讨论】:

在 cli 上运行命令时使用标准 php 不是一个选项吗? 我想获得 cli 命令的 JIT 速度.... 只是观察,-v Eval.Jit=false 没有任何区别,但我使用-v Eval.Jit=0 取得了成功。 【参考方案1】:

HHVM 的启动时间确实比 PHP5 长得多,因此仅打印出可用命令列表(即,没有实际工作)的东西在 HHVM 上会慢很多。您将支付更大的启动成本,而无需实际运行足够的代码来利用 JIT 加速!

这家初创公司的成本是否与您认为的缓慢一样?一些运行时间较长的命令会运行多长时间? (我对artisan 了解不多。)如果它们不是很长时间运行,那么禁用 JIT 确实可能会更好——除了上述启动成本外,JIT 本身也有一些预热成本,因为它会生成优化的代码。

如果artisan 命令长时间运行,执行真正的 CPU 工作(而不仅仅是数据库查询),并且在 HHVM 上仍然比在 PHP5 上慢,那将是有趣的研究。这里没有快速的答案或神奇的 INI 设置;您应该向issue on GitHub 提交尽可能多的信息,我们可以帮助您获得一个重现案例或深入了解正在发生的事情。对于这类事情,GitHub 问题是一个比 SO 更好的论坛 :)

【讨论】:

现在真的很有趣。我写了一个循环 1000000000 个循环,在工匠命令“hhvm -v Eval.Jit=true artisan my:command”中用了 4.8 秒,但在 test.php 文件中用了 24.7 秒“hhvm -v Eval.Jit=true test .php”?为什么会有这么大的不同?

以上是关于laravel lumen 上的 hhvm artisan 命令很慢的主要内容,如果未能解决你的问题,请参考以下文章

LUMEN:如何修复 SQLSTATE [42000]:语法错误或访问冲突:laravel 流明上的 1071

工匠迁移结果:SQLSTATE [HY000]:一般错误:LUMEN / LARAVEL 上的 1005

Laravel/Lumen - 使用 Model::with()

如何在 Cpanel 的子域 lumen/laravel 上安装免费 SSL?

如何在接收事件的多个 Laravel/Lumen 侦听器中保留模型状态?

Laravel源码解析--看看Lumen到底比Laravel轻在哪里