在 HHVM 上面運行Yii 2.0(Running Yii 2.0 on HHVM)
HHVM 簡單說,是Facebook 所作的另一種 PHP 引擎替代品,其運行效能比起目前的 PHP 5.6 有顯著提高(比起 PHP 5.5 和 PHP 5.4 提高更多)。通常對一般的 PHP 程式,藉由引進HHVM,我們可以獲得約 10–40% 的效能提昇。如果是行程密集(processing-intensive)的程式,HHVM 比起常用的Zend PHP,可能會有數倍效率的提昇。
1. 只限 Linux
HHVM 只限 Linux可以使用,沒有對應 Windows 的產品,而在 MacOS 環境下,只有有限的功能,沒有JIT編譯器(JIT compiler)。
2. 安裝 HHVM
HHVM 的安裝很簡單,下面是在 Debian 的安裝方法:
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449
echo deb http://dl.hhvm.com/debian wheezy main | sudo tee /etc/apt/sources.list.d/hhvm.list
sudo apt-get update
sudo apt-get install hhvm
其他的發布方式教學在這。
3. Nginx 設置
你可以在一個伺服器上同時運行 HHVM 和 php-fpm。因為這兩個都是透過 fastcgi 來運作,所以互相轉換很容易。我們甚至可以同時運作這兩者。
如果要這樣做,我們必須將一般的 PHP 與 HHVM,運行在不同的 port 上面。
server {
listen 80;
root /path/to/your/www/root/goes/here;
index index.php;
server_name hhvm.test.local;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9001;
try_files $uri =404;
}
}
server {
listen 80;
root /path/to/your/www/root/goes/here;
index index.php;
server_name php.test.local;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
try_files $uri =404;
}
}
如上,除了 port 不同以外,其他設置是幾乎一樣的。
4. 測試
HHVM 或多或少有與其他框架一起測試運作,Yii 也包括在內,除了一些小問題之外應該都可以運行。
不過,HHVM 與 PHP相比還是有許多不便,所以要實際上線之前,一定要重新測試過整個網頁。
5. 錯誤回報
HHVM 的錯誤回報與 PHP 的不同,根據預設,如果 HHVM 程式出現錯誤,你只會看到空白頁面,而不是錯誤訊息。
在 HHVM 的 config 裡面,加入以下條件,來修正這個問題:
hhvm.debug.server_error_message = true