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?