HHVM是由Facebook公司出品的一款高性能开源PHP代码虚拟机程序,全称叫做:HipHop for PHP。主要被用来执行hack编程语言或者php编程语言。HHVM借由将 PHP 程式码编译为字节码 ,使其可运行于虚拟机器的环境,也可以利用客制的机器码。当前Facebook的PHP程式皆运行在HHVM上。
HHVM支持运行现在已有的PHP程序,并且大量开发人员和主机开始采用HHVM搭建服务器。它采用JIT编译,并非直接解释型,也并不是直接把PHP转化成C++,而是把Hack和PHP编译为一种中间的字节码。 然后这种字节码将被动态地翻译成一种x64机器码。 这个过程通过一个just-in-time (JIT)编译器发生在运行时中,这种编译过程可以允许任何形式的优化,而直接被制作成为静态编译的字节的话,就无法做到优化。 因而,才能够为你的Hack和PHP程序开启更高的性能表现。本站提供HHVM安装压缩包下载,后文附有详细的图文安装使用教程,希望能够帮助到需要的朋友们!

HHVM特性
1、Hack编程语言
2、JIT编译
3、HNI
4、支持FastCGI
5、Increasing PHP5 Parity
6、hphpd debugger
HHVM安装使用教程
一、HHVM安装
HHVM安装环境:
①本站下载的HHVM压压缩包
②服务器操作系统:Debian7 x64 ,搭建LNMH架构,安装HHVM并采用Fastcgi与Nginx结合。
注意:选择系统的时候一定要选择64位的系统不然无法安装。1、我们要先进行一些安装前的步骤: sudo apt-get update

2、接下来我们添加HHVM的apt源,并安装HHVM

3、如果是国内的主机请添加下面这个apt源,官方的apt源因为某些原因被Q了

4、这个过程大概几分钟即可完成,会有Selecting Unpacking ,用时比较长

5、看到以下界面说明HHVM安装成功。

二、安装Fastcgi方法
1、接着我们运行这条命令安装Fastcgi ,执行以下命令:

2、hhvm5接着我们查看一下端口开启没有:netstat –anp

3、OK~当我们完成上面步骤的时候已经安装完成了HHVM并开启了Fastcgi模式。
三、安装Nginx搭建LNMH
1、接下来将介绍安装Nginx并与HHVM相结合搭建LNMH架构,并添加虚拟主机。
2、首先我们先安装好Nginx,我们这里选用的是LinuxEye博客推出的lnmp一键包。

3、我们只用安装Nginx和memcached即可,其他不用安装,Mysql数据库我们后面选择用apt安装。

4、当我们安装完成了Nginx后,备份lnmp目录下的vhost.sh文件,然后手动修改vhost.sh让nginx添加虚拟机时自带Fastcgi。找到下面这段:(大约在314行)

5、把它修改成下面这样:

6、这样当我们添加虚拟主机时候就自动开启了Fastcgi。

7、可能有人又会问了,为什么我用IP访问的时候无法直接访问IP目录下面的PHP文件和程序? 因为我们还没有修改默认的nginx.conf文件,接下来我们就要修改这个文件,让我们访问IP的时候可以直接访问PHP程序。
①执行:vi /usr/local/nginx/conf/nginx.conf,我们找到下面这段:

②将它修改为下面这样:

8、接下来我们重启Nginx看看效果如何: service nginx restart

9、如果出现当配置好后,打开探针出现502。请再安装一次hhvm并开启Fastcgi。

10、下面我们安装mysql数据库,很简单只要一条命令: apt-get install mysql-server,中间只要输入一次密码就可以了。

四、HHVM性能简单测试
1、这里只是简单地使用Webbench进行压力测试,先测试一下普通的LNMP所能够承受的压力,在10秒中内发送100个请求,VPS主机的负载压力达到了27。

2、同时网站访问直接挂掉。

3、在同样配置上的VPS上测试HHVM性能,在10秒中内发送100个请求。

4、VPS主机的负载压力在5以下。

5、继续向HHVM增加压力:20秒内发送100个请求。

6、VPS主机的负载压力在10左右。且网站可以正常访问。

更新日志
1、支持数组常量。
2、重译所有(实验性的)
默认情况下,这个功能是禁用的,但是很有可能在下一个版本中启用这个功能。当请求的数量达到一定的阈值之后,将会对所有已有记录的代码进行重新编译优化组合。当个别函数调用达到分析阈值之后,重新编译转化所有代码也将会替代零星碎片化的编译过程。这个重新编译所有代码的过程,将会加速HHVM的预热过程,并且允许我们在优化过程(特别是内联优化过程中)做出更好地判断抉择。当然,你可以使用运行时配置项目hhvm.jit_retranslate_all_request,来开启“重新编译所有”,并设置请求的阈值。
3、CLI服务器模式(实验性的)
这将使您可以在您的服务器上,创建一个用于CLI脚本的服务器。这项功能是非常有用的,因为他可以在各个运行脚本之间,共享编译好的代码缓存。换句话说,就是:如果您已经运行了这个脚本,那么您再次运行时,就不需要等待从脚本导JIT的时间了。
4、hackfmt(实验性的)
这个工具,使用全功能/高保真的解析器,来重新格式化你的Hack语言代码。
5、扩展API的版本号使用HHVM_VERSION_BRANCH这个变量,而不是一个一成不变的API版本号。
6、为Fact Parse和Watchman扩展,添加了HHI头。
7、性能改进。
8、BUG修复。