background image

§

自 2007 年以来,Facebook 曾写过几种不同办法解决这些问题。其中包括用另一种语

言重写 Facebook,但是由于开发的复杂性和速度等原因,未能实现。他们还重写了 PHP
的核心部分 Zend 引擎,并提交给了 PHP 项目,但最终还是没有获得所需的性能。最后,
他们选择了 HipHop,终于得偿所愿。

有了 HipHop,工程师可以编写代码,用 PHP 编写组合最后页面的逻辑,并能够继续

快速迭代,同时后端服务使用 C++, Erlang, Java, Py thon 编写,提供新闻提要、搜索、聊天
和其他核心功能。

HipHop 开发故事

赵海平透露,项目最初是来自几年前 Facebook 公司一次 Hackathon 活动(员工在一

个晚上自由发挥,实验新的想法),他手工将 PHP 转换为 C++代码,虽然语法上很类似,
但是无论是 CPU 还是内存使用,转换后的 C++代码都大大优于 PHP。于是他想,如果构
建一个系统,编程实现转换,会怎么样呢?

在此之前,已经有了不少改善 PHP 性能的方法。Zend 引擎在运行时转换 PHP 源代码

为运行在 Zend 虚拟机上的 opcode。开源项目 APC 和 eAccelerator 将输出缓存,为大多数
PHP 网站所使用。此外,还有 Zend Server 这样的商业产品,通过 opcode 优化和缓存,提
高 PHP 速度。赵海平选择了另一条道路,将 PHP 直接转为 C++,然后再变成本地机器码。
当然,有许多开源项目也是同样的思路, Roadsend 和 phc 编译为 C,Quercus 编译为
Java,而 Phalanger 编译为.NET。

Hackathon 之后 8 个月,赵海平拿出了原型,足以说明这条路可以走通,编译后的代

码的确更快。不久,Iain Proctor 和 Minghui Yang 加入进来。接下来又开发了 10 个月,在生
产服务器上测试了 6 个月。然后正式上线部署,6 个月之后,Facebook 90%以上的 Web 流