一、简介

     HipHop VM(HHVM)是Facebook推出的用来执行PHP代码的虚拟机,它是一个PHP的JIT(Just-In- Time)编译器,同时具有产生快速代码和即时编译的优点。
Facebook表示,HHVM将替代HPHPi,用于所有的PHP执行。根据 Facebook透漏,HHVM在速度方面获得了显著改进,比目前使用的PHP解释器快60%,而使用内存减少90%。Facebook于12年十二月初发布了一个博文,宣布他们的解释型PHP运行环境HHVM(HipHop VM)已经达到甚至超过了编译型PHP运行环境HipHop的运行速度

二、安装

1,安装epel源:yum install http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm 

2,配置源:
  cd /etc/yum.repos.d 
  wget http://www.hop5.in/yum/el6/hop5.repo
  yum makecache
3,升级gcc到4.8.2: yum install gcc.x86_64
4,安装HHVM2.4 : yum install hhvm.x86_64

三、编写配置文件

vi /etc/hhvm.hdf

Server {

  Port = 90
  Type=fastcgi                        #fastcgi支持
  SourceRoot = /home/www/
}
Eval {
  Jit = true                              #启用Jit动态编译
  JitWarmupRequests=0   #第一次请求即开启Jit,默认是11
}
Log {
  Level = Error
  UseLogFile = true
  File = /var/log/hhvm/error.log
  Access {
    * {
      File = /var/log/hhvm/access.log
      Format = %h %l %u %t \"%r\" %>s %b
    }
  }
}
VirtualHost {
  * {
    Pattern = .*
    RewriteRules {
      dirindex {
        pattern = ^/(.*)/$
        to = $1/index.php
        qsa = true
      }
    }
  }
}
StaticFile {
  FilesMatch {
    * {
      pattern = .*\.(dll|exe)
      headers {
        * = Content-Disposition: p_w_upload
      }
    }
  }
  Extensions {
    css = text/css
    gif = p_w_picpath/gif
    html = text/html
    jpe = p_w_picpath/jpeg
    jpeg = p_w_picpath/jpeg
    jpg = p_w_picpath/jpeg
    png = p_w_picpath/png
    tif = p_w_picpath/tiff
    tiff = p_w_picpath/tiff
    txt = text/plain
  }
}

四、启动HHVM服务

hhvm --mode daemon --user root --config /etc/hhvm.hdf

--mode daemon:后台进程方式运行

--user root:以root用户运行

--config :启动的配置文件


CLI: time hhvm -v"Eval.Jit=true""Eval.JitWarmupRequests=0" -f test_cpu.php

五、与nginx结合,使用nginx做反向代理,将请求转给hhvm

在nginx里创建虚拟机:


server {
listen 8000;     #虚拟机端口8000,ps:不要hhvm端口混淆
server_name localhost;
location / {
root /home/www;
index index.html index.php index.htm;
}
location ~ \.php$ {
proxy_set_header X-Real-IP $remote_addr; #把真实的ip发送给后端 proxy_set_header Host www.xxx.com;#发送请求的host;
proxy_pass http://localhost:90; #把所有的请求转发给hhvm的90端口,和php fpm类似;
}

}