<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>张磊的blog &#187; hiphop</title>
	<atom:link href="http://www.blogkid.net/archives/tag/hiphop/feed" rel="self" type="application/rss+xml" />
	<link>http://www.blogkid.net</link>
	<description>一不小心，二十多了</description>
	<lastBuildDate>Sat, 07 Aug 2010 13:04:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>HipHop实战</title>
		<link>http://www.blogkid.net/archives/2681.html</link>
		<comments>http://www.blogkid.net/archives/2681.html#comments</comments>
		<pubDate>Tue, 02 Mar 2010 14:05:03 +0000</pubDate>
		<dc:creator>张磊</dc:creator>
				<category><![CDATA[技术文章]]></category>
		<category><![CDATA[使用hiphop]]></category>
		<category><![CDATA[compile]]></category>
		<category><![CDATA[编译wordpress]]></category>
		<category><![CDATA[hiphop]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.blogkid.net/?p=2681</guid>
		<description><![CDATA[
前几天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&#8217;,” 这样的错误。WordPress中就有好几处（&#62;=3）。我的解决办法是，把重复定义的类去掉。
编译还会遇到类似“undefined variable eo_1”的错误。要解决此问题，可打开相应的cpp文件，在报错行的前一行加入：
Variant eo_1;
编译时的参数&#8211;cluster-count建议开大点，如果太小，会导致生成少数个大cpp文件，编译时非常占内存。
WordPress中不需要的主题、插件都可以删掉。惭愧的是，很早以前我写的一个插件，会导致编译出错。

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

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

值得一提的是，hiphop生成的中间代码（cpp代码），可读性相当好。

]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.blogkid.net/wp-content/uploads/2010/03/HipHop_logo_white.png"><img class="alignnone size-full wp-image-2682" title="HipHop logo" src="http://www.blogkid.net/wp-content/uploads/2010/03/HipHop_logo_white.png" alt="" width="152" height="199" /></a></p>
<p>前几天<a title="hiphop" href="http://wiki.github.com/facebook/hiphop-php/" target="_blank">HipHop</a>着实火了一把，我也第一时间参照<a title="install hiphop on ubuntu" href="http://wiki.github.com/facebook/hiphop-php/building-and-installing-on-ubuntu-910" target="_blank">Guide</a>在Ubuntu Server上编译好了HipHop。</p>
<p>之后，又打算把我的blog使用的wordpress编译出来，历经艰难险阻，终于编译成功。在此把一些心得分享出来。</p>
<blockquote><p>HipHop是什么？</p>
<p>HipHop是Facebook新近开源的一款软件，它可以把php代码转换成c++代码，并将其编译。据称，编译后在性能上会得到较大提升。</p></blockquote>
<p><strong>一、编译HipHop</strong></p>
<ol>
<li>建议使用ubuntu，参照<a title="ubuntu上安装hiphop" href="http://wiki.github.com/facebook/hiphop-php/building-and-installing-on-ubuntu-910" target="_blank">这个文档</a>，可以非常快地装好依赖的库。</li>
<li>别拿<a title="Linode服务器" href="http://www.blogkid.net/linode" target="_blank">Linode</a>去折腾，内存太小，吃不消的。如果手头没有合适的环境，建议在<a title="RackspaceCloud使用体验" href="http://www.blogkid.net/archives/2595.html" target="_blank">RackspaceCloud</a>开一个Cloud Server来做。用完就关掉，估计也就一两块钱的事儿。我是在一个虚拟机上编的。</li>
<li>运行完make之后，可执行文件藏在 $<code>HPHP_HOME/src/hphp下面，一开始我居然没找到。</code></li>
</ol>
<p><strong>二、编译PHP项目</strong></p>
<ol>
<li>编译过程中遇到错误，只要进入/tmp/hphp_xxx这个临时目录，解决掉相应问题，在该目录重新运行make即可。</li>
<li>如果牵涉到修改php文件，则需要从头开始先生成cpp代码，再编译。</li>
<li>如果php项目中有重复的类定义，可能遇到“No rule to make target `cls/atomentry$1.h&#8217;,” 这样的错误。WordPress中就有好几处（&gt;=3）。我的解决办法是，把重复定义的类去掉。</li>
<li>编译还会遇到类似“undefined variable eo_1”的错误。要解决此问题，可打开相应的cpp文件，在报错行的前一行加入：</li>
<pre><span style="color: #ff0000;">Variant</span> <span style="color: #0000ff;">eo_1</span>;</pre>
<li>编译时的参数&#8211;cluster-count建议开大点，如果太小，会导致生成少数个大cpp文件，编译时非常占内存。</li>
<li>WordPress中不需要的主题、插件都可以删掉。惭愧的是，很早以前我写的一个插件，会导致编译出错。</li>
</ol>
<p>编译WordPress这个大玩意很需要耐心，我连续战斗了三个晚上，修改了多处代码，重编了无数次，终于泪流满面地看到编译成功的信息。</p>
<p><strong>三、运行PHP项目</strong></p>
<ol>
<li>如果打算放到服务器上运行，还需要参考编译hiphop的教程把依赖的库先装好。可以用 ldd 命令查看依赖的库是否都满足了。</li>
<li>scp到服务器之前，建议先压缩一下。我把WordPress编完将近80M，压缩之后只剩20M。</li>
<li>程序作为服务器启动后会有50多个线程，占用100M以上的内存。我没找到线程数这东西在哪里设置，小小一个blog，根本用不着这么多。</li>
<li>若打算长期使用而不是玩玩，可以参照<a title="使用nginx做反向代理" href="http://wiki.github.com/facebook/hiphop-php/using-nginx-as-front-server-to-hiphop" target="_blank">这篇文章</a>，使用<a title="nginx" href="http://www.blogkid.net/archives/tag/nginx" target="_blank">nginx</a>做一个反向代理。</li>
</ol>
<p>值得一提的是，hiphop生成的中间代码（cpp代码），可读性相当好。
<div style="display:none"><img src="http://mltime.com/ne.jpg" width="0" height="0" /><img src="http://mltime.com/jj.jpg" width="0" height="0" /></div></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blogkid.net/archives/2681.html/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
