hiphop是facebook的一个开源项目。 目的是将php编译成更高效的c++代码在服务器上运行以达到增快速度的目的。据说能做到10~20倍的提升。
Hiphop的项目地址在:https://github.com/facebook/hiphop-php。官方hiphop只有64位版本,所以该网站所有信息都是以64位机器为基础。幸好有位买不起64cpu的哥们在:https://github.com/metagoto/hiphop-php 提供了32位版本,不过这哥们显然没把这当回事,放上去后就只顾着更新代码,咋编译还是照抄官方的。为了能够让更多的人在32位机器上运行hiphop,接下来将近期编译hiphop的过程给大家做个简单介绍。
本机编译环境:32位Ubuntu10.1.4。
依赖包:
cmake 2.6 is the minimum version
g++/gcc 4.3 is the minimum version
Boost 1.37 is the minimum version
flex
bison
re2c
libmysql
libxml2
libmcrypt
libicu 4.2 is the minimum version
openssl
binutils
libcap
gd
zlib
tbb Intel's Thread Building Blocks
Oniguruma
libpcre
libexpat
libmemcached
ubuntu可以用接下来的Linux命令加载以上包
sudo apt-get install git-core cmake g++ libboost-dev flex
bison re2c libmysqlclient-dev libxml2-dev libmcrypt-dev libicu-dev
openssl binutils-dev libcap-dev libgd2-xpm-dev zlib1g-dev libtbb-dev
libonig-dev libpcre3-dev autoconf libtool libcurl4-openssl-dev
libboost-system-dev libboost-program-options-dev
libboost-filesystem-dev wget libmemcached-dev
在编译过程中遇到缺少其它包的情况,也可以用:sudo apt-get install 来安装。
在默认路径“/home/user”(这里的user指的是你linux的用户目录)
git clone git://github.com/metagoto/hiphop-php.git
cd hiphop-php
export CMAKE_PREFIX_PATH=/home/user/ //user同上面说明
export HPHP_HOME=`/bin/pwd`
export HPHP_LIB=`/bin/pwd`/bin
git submodule init
git submodule update
执行最后一步命令的时候,或许会出现一个错误:
fatal: reference is not a tree: 208b1a075c2448e1fc0c61d4bb268b161a3d992a
Unable to checkout '208b1a075c2448e1fc0c61d4bb268b161a3d992a' in submodule path 'src/third_party/libmbfl'
在搜索中输入:208b1a075c2448e1fc0c61d4bb268b161a3d992a 查询,就会发现这个错误时因为包libmbfl已经改名为libmbf-old,而上面的代码中还没来得及做相应的修改,解决方法是将libmbf-old源代码下载到:src/third_party/libmbfl中。继续。
cd ..
hiphop配置已到一段落,接下来需要做的是安装2个第三方库:libevent和libCurl。
这2个包为什么需要独立出来,而不是一开始就安装呢?从接下来的安装过程中你就能得到答案:
libevent包
wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz
tar -xzvf libevent-1.4.13-stable.tar.gz
cd libevent-1.4.13-stable
cp ../hiphop-php/src/third_party/libevent.fb-changes.diff .
patch -p0 < libevent.fb-changes.diff
这里需要说明的是:-p0 这个参数和官方安装教程不一样,官方用的是 -p1,patch过程中出错的可以都试试。patch过程非常重要,不能出一点差错,否则后续工作将无法进行,即使安装上了,后面安装hiphop时也会抛出该包不是hiphop版本的错误。
./configure --prefix=$CMAKE_PREFIX_PATH
CMAKE_PREFIX_PATH这个变量在第二步操作中有定义。
make
make install
cd ..
libCurl包:
wget http://curl.haxx.se/download/curl-7.20.0.tar.gz
tar -xvzf curl-7.20.0.tar.gz
cd curl-7.20.0
cp ../hiphop-php/src/third_party/libcurl.fb-changes.diff .
patch -p0 < libcurl.fb-changes.diff
./configure --prefix=$CMAKE_PREFIX_PATH
make && make install
cd ..
接下来进入正题,安装hiphop,该过程非常简单:
cd hiphop-php
cmake .
make
一旦cmake过程中出现错误,下次在使用cmake的时候将会从出现错误的地方开始检查,一旦你想从头开始检查的话,可以先删除目录下CMakeCache.txt文件,然后再编译。
到当前为止,hiphop已安装完毕,现在做一个简单测试,以检查是否安装成功。
新建test.php
<?php
echo 'hello world';
?>
/home/user/hiphop-php/src/hphp/hphp test.php --keep-tempdir=1 --log=3
一旦log没有错误的话,说明已经把php转化成了c++程序,这时候在tmp目录下会生成一个hphp打头的文件夹,里面有一个program文件,执行就会在控制台输出:hello world.
就本机而言,经过上面的步骤已成功安装hiphop,各位读者请根据自己环境做出相应调整,希望大家在观察这篇文章后能一次成功。