HipHop实战
可任意转载,但必须在醒目位置以超链接形式标明文章原始出处和作者信息
原文地址:http://www.blogkid.net/archives/2681.html
原文地址:http://www.blogkid.net/archives/2681.html
前几天HipHop着实火了一把,我也第一时间参照Guide在Ubuntu Server上编译好了HipHop。
之后,又打算把我的blog使用的wordpress编译出来,历经艰难险阻,终于编译成功。在此把一些心得分享出来。
HipHop是什么?
HipHop是Facebook新近开源的一款软件,它可以把php代码转换成c++代码,并将其编译。据称,编译后在性能上会得到较大提升。
一、编译HipHop
- 建议使用ubuntu,参照这个文档,可以非常快地装好依赖的库。
- 别拿Linode去折腾,内存太小,吃不消的。如果手头没有合适的环境,建议在RackspaceCloud开一个Cloud Server来做。用完就关掉,估计也就一两块钱的事儿。我是在一个虚拟机上编的。
- 运行完make之后,可执行文件藏在 $
HPHP_HOME/src/hphp下面,一开始我居然没找到。
二、编译PHP项目
- 编译过程中遇到错误,只要进入/tmp/hphp_xxx这个临时目录,解决掉相应问题,在该目录重新运行make即可。
- 如果牵涉到修改php文件,则需要从头开始先生成cpp代码,再编译。
- 如果php项目中有重复的类定义,可能遇到“No rule to make target `cls/atomentry$1.h’,” 这样的错误。WordPress中就有好几处(>=3)。我的解决办法是,把重复定义的类去掉。
- 编译还会遇到类似“undefined variable eo_1”的错误。要解决此问题,可打开相应的cpp文件,在报错行的前一行加入:
- 编译时的参数–cluster-count建议开大点,如果太小,会导致生成少数个大cpp文件,编译时非常占内存。
- WordPress中不需要的主题、插件都可以删掉。惭愧的是,很早以前我写的一个插件,会导致编译出错。
Variant eo_1;
编译WordPress这个大玩意很需要耐心,我连续战斗了三个晚上,修改了多处代码,重编了无数次,终于泪流满面地看到编译成功的信息。
三、运行PHP项目
- 如果打算放到服务器上运行,还需要参考编译hiphop的教程把依赖的库先装好。可以用 ldd 命令查看依赖的库是否都满足了。
- scp到服务器之前,建议先压缩一下。我把WordPress编完将近80M,压缩之后只剩20M。
- 程序作为服务器启动后会有50多个线程,占用100M以上的内存。我没找到线程数这东西在哪里设置,小小一个blog,根本用不着这么多。
- 若打算长期使用而不是玩玩,可以参照这篇文章,使用nginx做一个反向代理。
值得一提的是,hiphop生成的中间代码(cpp代码),可读性相当好。
March 2nd, 2010 by 张磊



./program -m server -v “Server.ThreadCount=1″ 这样就可以设置为一个线程了,
如果需要更多配置的话, 可以使用 –config 指定配置文件, ^_^
最后 WordPress 运行起来的速度较 FastCGI 有没有很大的提升?
@Xitong
没舍得压我的服务器。但是在线下测数据库连接又不对,所以后来没跑
编译完的WordPress能不能拿出来共享一下~~
@小米
有关数据库配置的文件都编在里头了,怎么分享呢?
磊哥,能交换一下链接不?http://piao2010.com
@piao2010
好啊,我该怎么写你的描述呢?
就用piao2010吧,多谢哈!
终于明白HipHop是什么了
原来可以把PHP翻译成CPP,以后会一种语言就够了,用类似的翻译软件翻译成其他的;哈哈~
顺便问一下张磊哥:我现在是电子工程系,想转到计算机系;现在大二,转系考试困难吗?
这得问辅导员