background image

编程效率高是 PHP 语言最大的特点,但是作为脚本语言,一直存在着 CPU 和内存使

用效率不高的问题,直到 HipHop for PHP 的出现。Facebook 神秘的 PHP 项目 HipHop for 
PHP 终于揭开面纱。这个项目由一个 PHP 到 C++的转换程序,一个重新实现的 PHP 运行
库,和许多常用 PHP 扩展的重写版本构成,目的是旨在加速和优化 PHP。

用 Facebook 官方博客(无法直接访问)上项目负责人赵海平(北大 1987 届遗传与分

子生物专业,普林斯顿计算机科学博士)的话说,HipHop 项目对 Facebook 影响巨大。它
目前已经支撑了 Facebook 90%的 Web 流量。由于 HipHop,Facebook Web 服务器上的 CPU
使用平均减少了 50%,从而大大减少了服务器的需求。为了让这一改进也惠及社区,他们
决定将之开源,希望能够进一步帮助提高更多大型复杂 PHP 网站的可伸缩性。

PHP 和 Facebook 的问题

众所周知,Facebook 的前端主要是用 PHP 写的。赵海平说,过去六年 Facebook 从

PHP

 

     语言

 

 

§

的进展上获益良多。PHP 非常简单,易学易用,好读好调试,因此新工程师成

长很快,有利地促进了 Facebook 的更快的创新。

PHP 是一种脚本语言,其好处是编程效率高,能够支持产品的快速迭代。但是与传统

的编译语言相比,脚本语言的 CPU 和内存使用效率不好。随着 Ajax 技术的广泛采用,加
上 SNS 对动态要求较高,这些缺点更显得突出。对于每月超过 4000 亿次 PV 的 Facebook
来说,如何实现扩展,尤其具有挑战性。

常见的办法是直接用 C++重写 PHP 应用中比较复杂的部分,作为 PHP 扩展。实际上,

PHP 就转变为一种胶水语言,连接前端 HTML 和 C++应用逻辑。从技术角度讲这也没有问
题,但是增加了技能需求,能够在整个应用上工作的工程师数量就大大减少了。学习 C++
只是编写 PHP 扩展的第一步,接下来还要理解 Zend API。由于 Facebook 的工程团队较小
每个工程师要支持 100 万以上的用户。有些代码不是团队里每个人都能看懂,这对于
Facebook 是无法接受的。

Facebook 网站本身的可伸缩性更具挑战性,因为几乎每次页面浏览都是有个性化体

 

 

验的登录用户发起。浏览主页 时,系统需要查询所有朋友、朋友最重要的状态更新、根据
隐私设置筛选结果,然后还要显示评论、照片等等动态,这一切都需要在一秒内完成。