Мультитредовый вебсервер + движок PHP
HPHPc + HPHPi + HPHPd
Заменил HPHPc и HPHPi в Facebook в 2013.
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
Инструкции для других дистрибутивов
hhvm --help
hhvm test.php
hhvm -m server
echo defined('HHVM_VERSION') ? 'Using HHVM' : 'Not using HHVM';
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:9000;
try_files $uri =404;
}
}
Проверим на Yii2?
basic + запрос в базу + вывод в foreach
siege -b -c10 -t60S http://hhvm.hhvm.local/
siege -b -c10 -t60S http://php.hhvm.local/
Для 1, 2, 3, 4, 5, 6, 10, 20, 50 конкурентных запросов.
Concurrency | PHP | HHVM |
---|---|---|
1 | 26.65 | 36.84 |
2 | 32.48 | 35.22 |
3 | 32.68 | 36.69 |
4 | 35.54 | 38.70 |
5 | 34.57 | 38.04 |
6 | 34.05 | 38.56 |
10 | 35.01 | 38.89 |
20 | 32.88 | 37.18 |
50 | 33.81 | 37.35 |
Concurrency | PHP | HHVM |
---|---|---|
1 | 40 | 30 |
2 | 60 | 60 |
3 | 90 | 80 |
4 | 110 | 100 |
5 | 140 | 130 |
6 | 180 | 160 |
10 | 280 | 260 |
20 | 610 | 540 |
50 | 1460 | 1320 |
Facebook работает на HHVM с начала 2013.
Wikipedia перешла за 6 месяцев
Но есть нюансы...Начал разрабатываться в 2013, релизнут в 2014.
int?
<?hh
class MyClass {
public function alpha(): int {
return 1;
}
public function beta(): string {
return 'hi test';
}
}
function f(MyClass $my_inst): int {
return $my_inst->alpha();
}
<?php
меняем на <?hh
И ещё... всё надо обернуть в классы.
Есть h2tp
, который конвертирует код обратно в PHP 5, но он не для этого.
which composer
..bashrc
:alias composer='hhvm /path/to/composer'