ob娱乐下载Symfony 2.3实现了100%的HHVM兼容性
2015年7月1日·发表的哈维尔Eguiluz
HHVM是一个开源虚拟机,设计用于执行用Hack和PHP编写的程序。HHVM使用即时(JIT)编译方法为PHP应用程序实现卓越的性能。
在过去的几个月里,HHVM和即将到来的PHP 7版本进行了一场史诗般的战斗,以成为最快的PHP引擎。在Syob娱乐下载mfony,我们非常激动,因为这种激烈的竞争最终将使我们所有人受益。
我们的HHVM兼容性之旅始于2013年12月约瑟夫Bielawski在Travis CI上添加了HHVM到测试PHP引擎的列表(看到提交).不久之后,法比安进行了第一次代码更改,以提高HHVM的兼容性:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16
//在PHP可执行文件的获取中添加对HHVM的支持// @see https://github.com/ob娱乐下载symfony/symfony/pull/9882类PhpExecutableFinder{/ /……公共函数找到(){如果(定义(“HHVM_VERSION”) & &假= = !$hhvm= getenv (“PHP_BINARY”)) {返回$hhvm;}/ /……}}
这是第一次修改代码,但是其他几十个变化紧随其后。有些问题很棘手,比如被克利斯朵夫Coevoet在第10000个Syob娱乐下载mfony Pull Request:
1 2 3 4 5 6 7 8 9 10
/ / srcob娱乐下载 / Symfony /组件/控制台/ Application.php// HHVM只接受str_split中的32位整数,即使PHP_INT_MAX为//一个64位整数:https://github.com/facebook/hhvm/issues/1327$宽度=$这->getTerminalWidth () ?$这->getTerminalWidth () -1(定义(“HHVM_VERSION”) ?1<<31: php_int_max);
Symfony社区的辛勤工作总是让我们在超过99%的ob娱乐下载HHVM兼容性根欧宝体育平台怎么样据他们的项目兼容性图表.实现Symfony 2.3 100%里程碑的最后一个必要推动是由ob娱乐下载尼古拉斯Grekas在15146年公关
最后一个拉请求修复了Debug、DependencyInjection、Filesystem、Form、HttpFoundation、Process和Routing组件上发现的所有问题。然而,由于一些HHVM问题或缺乏PHP特性,在某些情况下,我们唯一的选择是完全跳过测试:
1 2 3
如果(定义(“HHVM_VERSION”)) {$这->markTestSkipped (“HHVM在这个测试案例中的表现有所不同。”);}
在这些更改合并后,Travis最终显示了在HHVM上运行Symfony 2.3测试的绿色结果:ob娱乐下载
现在是庆祝的时候了,但很快我们将继续工作,以便为其余维护的Symfony分支实现100%的HHVM兼容性。ob娱乐下载
评论
尼古拉斯Grekas
2015年7月3日说在06:07
对于读者(无意冒犯@Javier,非常感谢你的这篇文章!):
这并不是“在某些情况下”我们唯一的选择是完全跳过测试。
这是唯一的情况,我们唯一的选择是完全跳过测试。
100% HHVM compat是100%诚实的。我们没有因为错误、问题或bug而跳过任何一个测试。hhvm唯一缺少的“特性”是:严格的通知。hhvm所做的事情值得称赞:奇偶校验足够接近,因此可以以与我们处理PHP版本之间的增量完全相同的方式处理增量。
这并不是“在某些情况下”我们唯一的选择是完全跳过测试。
这是唯一的情况,我们唯一的选择是完全跳过测试。
100% HHVM compat是100%诚实的。我们没有因为错误、问题或bug而跳过任何一个测试。hhvm唯一缺少的“特性”是:严格的通知。hhvm所做的事情值得称赞:奇偶校验足够接近,因此可以以与我们处理PHP版本之间的增量完全相同的方式处理增量。
如果有人对我所写的关于HHVM问题的文章感到冒犯,请注意,目前在官方HHVM存储库中有超过800个报告的问题。我以一种积极的方式说,我个人认为,对于一个大而受欢迎的项目来说,出现很多问题是正常的(Symfony也有数百个报告的问题,我认为这是好事)。ob娱乐下载
至于跳过的测试和缺乏的功能,我在这句话中考虑了与Symfony相关的所有代码,包括Monolog、Twig、Doctrine等。ob娱乐下载如果您在Symfony源代码中查找,您会发现许ob娱乐下载多被跳过的测试,甚至由于HHVM的不同行为而缺少一些特性。
至于跳过的测试和缺乏的功能,我在这句话中考虑了与Symfony相关的所有代码,包括Monolog、Twig、Doctrine等。ob娱乐下载如果您在Symfony源代码中查找,您会发现许ob娱乐下载多被跳过的测试,甚至由于HHVM的不同行为而缺少一些特性。
尼古拉斯Grekas
2015年7月3日说在07:07
谢谢你的精准@Javier!
顺便说一句,对于读者来说,你会很高兴地知道,就在这篇文章发表几天后,Symfony现在对所有分支机构强制100% HHVM !ob娱乐下载
顺便说一句,对于读者来说,你会很高兴地知道,就在这篇文章发表几天后,Symfony现在对所有分支机构强制100% HHVM !ob娱乐下载
Gadelkareem
2015年7月13日说在19:56
问题是Symfony与HHVM或PHP兼ob娱乐下载容,而不是两者都兼容!这使得在生产中很难使用PHP-FPM故障恢复。
评论截止。
为了确保评论保持相关性,旧帖子将被关闭。
这方面的概述可以在我的网站上找到:http://hhvm.h4cc.de/graphs/
您也可以上传一个作曲器。锁定文件来检查应用程序的HHVM兼容性。
http://hhvm.com/frameworks/
显示了测试结果的截图。这个信息对我来说毫无意义。这是一个没有上下文的数字。
Javier Eguiluz is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now@Felix的好处是你可以在HHVM引擎上运行Symfony 2.3,这比在Pob娱乐下载HP 5.3或5.4引擎上运行要快几个数量级。在最近的PHP引擎中,性能差异并不是那么糟糕。