HipHop实战

来源:百度文库 编辑:神马文学网 时间:2024/04/28 04:52:41

HipHop实战

可任意转载,但必须在醒目位置以超链接形式标明文章原始出处和作者信息
原文地址:http://www.blogkid.net/archives/2681.html

前几天HipHop着实火了一把,我也第一时间参照Guide在Ubuntu Server上编译好了HipHop。

之后,又打算把我的blog使用的wordpress编译出来,历经艰难险阻,终于编译成功。在此把一些心得分享出来。

HipHop是什么?

HipHop是Facebook新近开源的一款软件,它可以把php代码转换成c++代码,并将其编译。据称,编译后在性能上会得到较大提升。

一、编译HipHop

  1. 建议使用ubuntu,参照这个文档,可以非常快地装好依赖的库。
  2. 别拿Linode去折腾,内存太小,吃不消的。如果手头没有合适的环境,建议在RackspaceCloud开 一个Cloud Server来做。用完就关掉,估计也就一两块钱的事儿。我是在一个虚拟机上编的。
  3. 运行完make之后,可执行文件藏在 $HPHP_HOME/src/hphp下面,一开始我居然没找到。

二、编译PHP项目

  1. 编译过程中遇到错误,只要进入/tmp/hphp_xxx这个临时目录,解决掉相应问题,在该目录重新运行make即可。
  2. 如果牵涉到修改php文件,则需要从头开始先生成cpp代码,再编译。
  3. 如果php项目中有重复的类定义,可能遇到“No rule to make target `cls/atomentry$1.h’,” 这样的错误。WordPress中就有好几处(>=3)。我的解决办法是,把重复定义的类去掉。
  4. 编译还会遇到类似“undefined variable eo_1”的错误。要解决此问题,可打开相应的cpp文件,在报错行的前一行加入:
  5. Variant eo_1;
  6. 编译时的参数–cluster-count建议开大点,如果太小,会导致生成少数个大cpp文件,编译时非常占内存。
  7. WordPress中不需要的主题、插件都可以删掉。惭愧的是,很早以前我写的一个插件,会导致编译出错。

编译WordPress这个大玩意很需要耐心,我连续战斗了三个晚上,修改了多处代码,重编了无数次,终于泪流满面地看到编译成功的信息。

三、运行PHP项目

  1. 如果打算放到服务器上运行,还需要参考编译hiphop的教程把依赖的库先装好。可以用 ldd 命令查看依赖的库是否都满足了。
  2. scp到服务器之前,建议先压缩一下。我把WordPress编完将近80M,压缩之后只剩20M。
  3. 程序作为服务器启动后会有50多个线程,占用100M以上的内存。我没找到线程数这东西在哪里设置,小小一个blog,根本用不着这么多。
  4. 若打算长期使用而不是玩玩,可以参照这篇文章,使用nginx做 一个反向代理。

值得一提的是,hiphop生成的中间代码(cpp代码),可读性相当好。