这里说的 HipHop 可不是纽约街头的嘻哈一族,尽管两者是同一个词。HipHop PHP 原本是 FaceBook 公司的独门暗器,大大优化了 Facebook 网站 Web 服务器的运行速度。在2010年2月2日早晨,他们决定将其开源公布(遵照 PHP 授权协议),以便更多的 PHP 网站能受益于 HipHop

Joomla 也是基于 PHP 开发的,同时很多用户也抱怨 Joomla 的运行速度慢,执行效率低。能否借助 HipHop 来加快 Joomla! 网站的运行速度呢?理论上说是可行的。我们逐步分析如下。

HipHop for PHP

什么是 HipHop PHP?

引自 HipHop 项目负责人 赵海平HipHop 是一个源代码转换器。它将 PHP 代码转换为高度优化的 C++ 代码,然后再使用 g++ 编译器编译。它可以保持语义等效地执行源代码,但牺牲了一些很少会使用到的功能,比如 eval()。为了进一步的提升性能,HipHop 包含一个 code transformer,一个重新实现的 PHP runtime 系统,并利用这些性能的优化的优势,对许多共同的 PHP 扩展进行了重写。

这里有一段视频,是 FaceBook.com 内部开发人员关于 HipHop 的研讨会录像。请点击下图来观看影片。

注意:这段视频储存在 ustream.tv 网站,某些地区的网友可能无法打开,需要借助代理服务器才行。

Facebook HipHop 视频

HipHop 何以能加快 PHP 程序运行速度?

从上面的描述可以看出,HipHop 将 PHP 代码翻译、再借助 g++ 编译到 C++ 来运行,这当然会加快速度。这是由 PHP 语言的特点决定的。

PHP 是一种“脚本语言”,它的特色在于易读易学易用易排错。但是与编译语言如 C++ 相比,脚本语言的缺点就是对 CPU 和内存的利用不够理想,导致代码执行速度变慢。因此,将 PHP 转换为 C++ 之后执行,就大大提高了速度。

为什么不直接用 C++ 来编写?这要从 HipHop 的诞生说起。Facebook.com 网站一开始选择 PHP 语言,因为使用 PHP 的开发人员很多,而且容易上手。但是当 Facebook 网站的流量逐渐飙升后,PHP 的执行效率成为一个瓶颈。如果全部重写代码显然不现实,而且并非每一个开发人员都理解 C++。因此,HipHop 充当了一个“中间人”,它将 PHP 最终转向 C++,提高了服务器吞吐量。据 Facebook 说,这个技术几乎将 CPU 使用减少了 50%。目前 HipHop 支撑着 Facebook 90% 的 Web 流量。

HipHop 能否应用于 Joomla 网站?

前面说过,HipHop 需要牺牲一些不常用的 PHP 函数,例如 eval() 。不幸的是,目前在 Joomla 核心中,还有几处在使用这个函数。这个问题应该不难解决,如果 Joomla! 官方团队决定支持 HipHop 时,完全可以去掉这些 eval() 函数,或者用其它方式替代。

第二个困难是:很多 Joomla 站长需要经常安装、卸载,或者升级网站上的 Joomla 扩展,这样一来,就意味着每次这种操作后,都必须重新通过 HipHop 对全站代码进行编译。这似乎有点麻烦,因为有一些扩展,包括 Joomla 核心,经常是会升级的。

第三个困难是:站长必须拥有服务器的 root 权限才能使 HipHop 生效。这个问题的一个解决办法是,可以使用 NginX 搭建服务器,从而可为每一个虚拟主机用户提供 HipHop 服务。参看 Using nginx as front server to HipHop

对于拥有自己技术团队的大型 Joomla 网站来说,上述问题都不难解决。因此,我认为在 Joomla 网站应用 HipHop 技术并非不可能。

什么样的 Joomla 网站可能受益于 HipHop PHP?

按上面条件来筛选,大多数 Joomla 网站首先被第三条挡住:因为大多数虚拟主机用户目前还是在用 Apache 服务器,而不是 NginX。

另外,HipHop 的安装、运行也需要一定的技术水平,没有相关经验的普通站长也无法做到。

同时我必须提醒:对于每日访客不足千人的小网站来说,实际上速度的瓶颈往往在于共享虚拟主机资源,而不是 PHP 本身。假如有一台具备 8颗至强 CPU 和 16GB 内存的服务器仅供你的网站单独使用,光纤接入,你觉得网站还能慢吗?

因此,可以得出一个结论:HipHop 只对大型的网站有意义(例如 Facebook 每个月的 PV 达 4000亿!)。如果你想要用 Joomla 搭建大型网站,又担心将来网站的速度,那么或许 HipHop 可以让你找到一个平衡点。

还有一个例子是:WordPress 也是由 PHP 编写的,因此 HipHop 对于 WordPress 肯定也是适用的。不过,在整个 WordPress 圈子中,目前只有官方的 WordPress.com 网站使用了 HipHop,原因是该站同时为全世界大量会员提供博客服务。

我想,如果将来 Joomla 支持 HipHop,那么应该是首先从 Joomla.org 官方网站开始的。

HipHop 的相关资源

Facebook 将 HipHop 开源后,代码是存放在这里的:

https://github.com/facebook/hiphop-php

你可以从上面的 Github 页面下载 HipHop 的源代码,然后在自己电脑上测试。

提醒:目前 HipHop 主要面向 64位 Linux 服务器,虽然有人在 32位 CentOS 及 Fedora 上安装成功,但比较麻烦。建议使用 64位平台来测试,据说 Ubuntu 安装 HipHop 最方便。

如果你需要一些教程指导,可参看 Facebook HipHop 的官方 wiki

对于使用 Windows PC 而又心痒想测试 HipHop 的用户来说,我觉得在 PC 上安装虚拟机(Virtual Machine)是最好的办法。推荐使用 VirtualBox 免费虚拟机

  1. 评论 (2)

  2. Add Yours

评论 (2)

这里还没有人发表评论
  1. 汪浩

我想joomla或者drupal 还有 wp 慢的原因 大部分不一定是在php上面,大量的数据和浏览量应该是主因

  附件
您无权查看附件
 
  1. krantas

Joomla执行效率底下也是影响其快速发展的瓶颈之一,另外的比较痛的地方包括:URL搜索引擎友好,SEO优化,页面版式等。

  附件
您无权查看附件
 

免费下载最新Joomla!核心中文版

扫描此二维码,立即开始下载 Joomla 3 核心中文版

付费下载汉化版扩展

付费后即可下载独家海量

Joomla! CMS 扩展汉化版

了解付费会员制度

点击这里给我发消息

了解 joomlagate.com 网站的付费会员制度