お題を出されたので、社内の全体会議で発表した。

 とりあえず環境作らないといけないっつーことで…
一応その時のログからコマンドっぽい所だけを抜粋(漏れてる可能性大有り)
┌─[kmori][kmori-MacBook-Pro][~/vagrant/hhvm]
└─▪ vagrant box add hhvm_centos http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130731.box
┌─[kmori][kmori-MacBook-Pro][~/vagrant/hhvm]
└─▪ vi Vagrantfile
┌─[kmori][kmori-MacBook-Pro][~/vagrant/hhvm]
└─▪ vagrant up
┌─[kmori][kmori-MacBook-Pro][~/vagrant/hhvm]
└─▪ vagrant ssh
ご覧のとおり、CentOSに入れたんですけど、あとから色々みたらUbuntsuで入れれば手っ取り早かった…
まあいい 。
[vagrant@localhost ~]$ su -
パスワード:
[root@localhost ~]$
[root@localhost ~]#  yum install http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
[root@localhost ~]# cd /etc/yum.repos.d
[root@localhost yum.repos.d]# wget http://www.hop5.in/yum/el6/hop5.repo
[root@localhost yum.repos.d]#  yum install hhvm
[root@localhost hack-example-site]# rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
[root@localhost yum.repos.d]#  yum install nginx
[root@localhost yum.repos.d]#  nginx -v
nginx version: nginx/1.4.7
[root@localhost yum.repos.d]# yum upgrade
[root@localhost yum.repos.d]# hhvm --version
HipHop VM 2.4.0 (rel)
Compiler: tags/HHVM-2.4.0-0-gc82fcd8e6199c500454b1a8b930a876ef2c1522b
Repo schema: c63b08a9dc618c8a3eaea633d4d1776b668c75d6
[root@localhost yum.repos.d]# 
そして、nginxとHHVMを叩き込んで、とりあえず起動。
[root@localhost ~]#  hhvm --mode server -vServer.Type=fastcgi -vServer.Port=9000 > /dev/null 2>&1 &
んで
  • @uzulla さんのTinitter で動作環境した -> これ の動作は私の環境でも確認しました!コマンドレベルだとphp≒hhvmということらしい。
  • facebookが出したサンプルコード 試してみた。うん。動くね。終わり。あ、なんとなく静的型付けってこういうことねってことはわかった。
  • やたら速いという噂だったので、fizzbuzz書いてみて、検証してみた。hhvm(hack vs fast-cgiで。
<?php
require_once ('./SimpleTiming.php');

$st = new SimpleTiming;
$st->start();

foreach (range (1, 10000000)  as $value) {
    if ($value % 15 == 0) {
        // echo "fizzbuzz";
    } else if ($value % 5 == 0) {
        // echo "buzz";
    } else if ($value % 3 == 0) {
        // echo "fizz";
    } else {
        // echo $value;
    }
    // echo "<br>";
}
$st->done();
$st->dumpresult();

exit;
一応ちゃらっと作ったストップウォッチクラス

<?php
class SimpleTiming
{
    var $set;

    public function __construct()
    {
        $this->set = [];
    }

    public function start ()
    {
        $this->set['start'] = $this->_getTiming ();
    }
    public function done ()
    {
        $this->set['done'] = $this->_getTiming ();
        $this->set['summary'] = $this->_summary();
    }
    public function dumpresult ($key = NULL)
    {
        if (!empty($key) && ($key == 'sec' || $key == 'msec') ) {
            var_dump ($this->set['summary'][$key]) ;
        } else {
            var_dump ($this->set['summary']) ;
        }
    }
    public function reset ()
    {
        $this->set = [];
    }

    private function _getTiming ()
    {
        list($microtime, $timestamp) = explode(" ", microtime());
        return [
                'timestamp' => $timestamp,
                'mictotime' => $microtime,
              ];
    }
    private function _summary ()
    {
        $summary_timestamp = $this->set['done']['timestamp'] - $this->set['start']['timestamp'];
        $summary_mictotime = $this->set['done']['mictotime'] - $this->set['start']['mictotime'];
        $sec = $summary_mictotime + date("s", $summary_timestamp);

        return [
                'sec' => $sec,
                'msec' => $sec*1000,
                ];
    }

}

一応、結果だけを書いて置くとfast-cgiは10000000回ぶん回すとエラーなので、ini_set("memory_limit", "-1");しました。が、めためた時間がかかってそうだったので、もう途中でやめました。
どっこい、hhvmの方は初回だけ8s前後、その後は大体2sくらいでした。めちゃはえええ。
ただ…イマイチ使いドコロがわからん…というのが正直な所ではありますね…PHPの部分でボトルネックになるパターンってなんじゃ?とも思うので。

まとめ

  • まだまだガンガン開発してる…(一ヶ月以内で2.4 -> 3.0.1とか)
  • サーバ作るときはdebianのほうが手っ取り早いです。公式もそうだし。 かったです。今見たら公式でもCentOSでのインストールの仕方でてました。ほんとにインストールできるかどうかしらんけど。
  • hhvm用のphp.iniとかあるから気をつけろ!
  • hack自体は新し目のPHPをラッピング?してる。 -> ブラケットで配列書いても行けたので。デフォでインストールされていたPHPとfast-cgiの方ではエラーになった。
 

Add Comments

名前
URL
 
  絵文字
 
 
livedoor プロフィール
Twitter
instagram(SnapWidget)
タグクラウド
  • ライブドアブログ