切换到 HipHop 而不是 XCache 是否有意义?
HipHop 是否准备好迎接黄金时段,还是我们应该等待几个月才能实施它?
编辑:我们对在运行 vBulletin 的服务器上测试配置很感兴趣。
让我澄清一下您可能对 Hiphop 和 Xcache 的误解。XCache 通过将 Opcode 缓存添加到 ZEND 的 PHP 实现(如 APC 和朋友)来工作,而 Facebook 的 HipHop 允许将 PHP 代码转换为 C++ 代码,然后使用 g++ 编译。不可能使用 HipHop 运行 XCache,因为 HipHop 不依赖于 Zend 解释器(甚至不使用 php 操作码,因为它在转换为 C++ 后编译为字节码)。
现在来回答您的问题,HipHop 正在被实时用于托管大量 Facebook 流量。如果这个项目不是很稳定,Facebook 不会发布它,但由于它是非常新的,我仍然会谨慎行事。HipHop 不仅仅是对旧 Zend Interpreter 的一个补丁,它是一种运行 PHP 代码的完全不同的方式,并且可能会有一些错误。
Facebook 为确保在切换到 Hiphop 之前能够正常工作而做的一件事是,他们能够为网站上的每个可能请求设置非常严格的单元测试。这样,如果 Hiphop 的输出与普通的 Zend PHP 不同,他们将返回并进行更多调试,直到一切都“为他们工作”。仅仅因为它在 Facebook 代码库上“有效”并不能证明它适用于您的代码库。如果您决定改用 HipHop,请务必对其进行测试。
编辑:
HHVM(HPHP 的新 VM 版本)现在可以eval
和create_function
. 由于所有/最有意义的原因,它们应该是相同的。
有一些东西与 HipHop 不兼容。他们删除了eval
andcreate_function
函数。他们目前也只支持 PHP 5.2.x,但他们计划“很快”添加对 5.3 的支持。
我喜欢 HipHop 的想法,所以不要误会我的意思,但有一点要记住:HipHop 并不适合所有人。从塞巴斯蒂安伯格曼:
它不能解决 99.9% 的 PHP 部署所面临的问题
除非您有 Facebook 比例的流量并且您的瓶颈是 CPU 或内存使用,否则您不太可能看到太多好处(与 xcache、apc 等相比)。数据库和文件系统访问仍然是你的杀手锏。
我相当有信心 vbulletin 3.x 不能与 HipHop 一起使用。VB 3 的插件系统由近 2000 个 eval 语句组成,散布在整个代码中,并且 hiphop 不支持 eval。
在编译 vbulletin 时,这可能只是冰山一角。