php buildpackでhackとphalconが動いた件について
DESCRIPTION
TRANSCRIPT
CF-PHP-BUILD-PACK を使って、HACK アプリ、 PHALCON FRAMEWORK をデプロイしてみる
安井 健治郎2014.05.23
Yuipapa は、 こんな奴• yuipapa
安井 健治郎
–年齢不詳
–趣味カート・料理・プログラミング映画鑑賞・音楽鑑賞 etc.
–今年こそ浦和レッズ 命!
本日の発表概要• Hack とは?• cf-php-build-pack の概要• Buildpack の設定ファイルを作成する• デプロイして、試してみよう• PHP vs Hack どちらが、速い?• Phalcon framework とは?• cf-php-build-pack でカスタムエクステン
ションを追加する• 動作確認
Hack とは?
Hack とは?
Facebook より OSS としてリリースされた HHVM( HipHop Virtual Machine for PHP )向けの開発言語
Hack の特徴•PHP との互換性有•静的型付き言語•Null を許容するか指定可•可変引数対応•<<Override>> の明記•型へのエイリアス定義•Collections,Shapes 、 Tuples などの複合型が利用可•Imm をコレクションに付けると書き込み不可属性となる•Generics 機能の利用可
HHVM の特徴•PHP 用の JIT コンパイラ•PHP のコードをダイナミックにバイナリコードへと変換•トレース型の JIT コンパイル手法を採用•Facebook 社内では将来的にはすべての PHP 実行環境を hhvm に置き換える計画
cf-php-build-pack の概要
cf-php-build-pack の概要•Web サーバーは、 apache 、 nginx を選択可能•PHP 実行環境は、 PHP とHHVM ( Hack : Facebook が公開した PHP の JIT )を選択可•apache 、 nginx 、 PHP 、 hhvm のバージョンを各々設定可能•apache 、 nginx 、 PHP 、 hhvm の設定ファイルを各々設置可能•apache 、 PHP のモジュールを追加可能
アプリの構成
Buildpack 用のアプリの基本構成
/ ┳ htdocs (ドキュメントルルート) ┃ ┣ .bp-config ┳ options.json ┃ ┣ nginx ┳fastcgi_params ┃ ┣ php
Buildpack の設定ファイルを作成する
options.json ( Buildpackの設定ファイル)を作成する
{ "WEB_SERVER": “nginx", "PHP_VM": "php",}
残りは、デフォルト値を利用https://github.com/dmikusa-pivotal/cf-php-build-pack/blob/master/defaults/options.json
デプロイして、試してみよう
・ gcf push 時に – b オプションで明示的に buildpack を指定
gcf push hack-app –b https://github.com/dmikusa-pivotal/cf-php-build-pack.git
PHP vs Hack どちらが、速い?
PHP vs Hack どちらが、速い?
新プログラミング言語「 Hack 」スタートアップガイド [Kindle 版 ] に掲載されている、 100 万回ループ処理を行う単純なプログラムを
nginx+fastcgi+HHVM vs nginx+fastcgi+php
で実行し、処理時間を比較してみました。
function loop() { $sum = 0; for ($i = 0; $i < 1000000; $i++) { $sum += $i * 2; }}
function loop_test() { $startTime = microtime(true); loop(); $endTime = microtime(true); echo ($endTime - $startTime) . "sec\n"; }
function main() { loop_test(); loop_test(); loop_test();}
main();
$ curl http://phpbench.10.244.0.34.xip.io/benchmark.php
0.052242994308472sec0.046237945556641sec0.045654058456421sec
$ curl http://hhvmbench.10.244.0.34.xip.io/benchmark.php
0.10812187194824sec0.09779691696167sec0.097671031951904sec
あれ?
Hack は、お作法に則って書かれたスクリプトでないと、本来の性能は出ない
場合により、 PHP よりも遅くなることもあり得る
Phalcon framework とは?
・ MVC を実現する PHP の framework・ PHP の拡張モジュールとして C言語で書かれている・ developper tool がある・専用のテンプレートエンジン「 Volt 」を内蔵している
cf-php-build-pack でカスタムエクステンションを追加するディレクトリ構造/
── .bp-config├ │ ── php├ │ │ ── ├ php.ini │
── extension├ │ ── phalcon.so ├ │
── htdocs├
php.ini extension=phalcon.so
を追加
http://docs.phalconphp.com/en/latest/reference/install.html#compilation
付録
リソース
• HHVM の github リポジトリhttps://github.com/facebook/hhvm
• hack コミュニティhttp://hacklang.org/
• HHVM コミュニティhttp://hhvm.com/
• Phalconhttp://phalconphp.com/ja/
質疑応答