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-p
デプロイし
て、試して
みよう
・ gcf push –時に b オプション
で明示的に buildpack を指定
gcf push hack-app –b
https://github.com/dmikusa-pivotal/c
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) . "secn";
}
function main() {
loop_test();
loop_test();
loop_test();
}
main();
$ curl http://phpbench.10.244.0.34.xip.io/benchmark.php
0.052242994308472sec
0.046237945556641sec
0.045654058456421sec
$ curl http://hhvmbench.10.244.0.34.xip.io/benchmark.php
0.10812187194824sec
0.09779691696167sec
0.097671031951904sec
あれ?
Hack は、お作法に則って書かれたスクリプトでない
と、本来の性能は出ない
場合により、 PHP よりも遅くなるこ
ともあり得る
Phalcon framework とは?
・ MVC を実現する PHP の framewor
・ 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/
• Phalcon
http://phalconphp.com/ja/
質疑応答

PHP buildpackでhackとphalconが動いた件について

Editor's Notes

  • #2 このテンプレートは、トレーニング資料をグループ設定で紹介するための開始ファイルとして使用できます。 セクション セクションを追加するには、スライドを右クリックします。 セクションは、スライドを整理したり、複数の作成者による共同作業を容易にするのに役立ちます。 ノート ノート セクションは伝達メモとして使用したり、プレゼンテーション対象者に詳細情報を提供するために使用します。 これらのノートは、プレゼンテーションの実行時にプレゼンテーション ビューに表示されます。 フォント サイズに注意してください (アクセスしやすさ、見やすさ、録画、およびオンラインでの実行のために重要です) 調和のとれた色 グラフ、チャート、およびテキスト ボックスに特に注意してください。 参加者が白黒またはグレースケールで印刷することを 考慮してください。テスト印刷を行って、白黒およびグレースケールで印刷したときの状態を 確認してください。 グラフィックス、表、およびグラフ シンプルな構成にします。可能であれば、一貫性のある落ち着いたスタイルと色を使用してください。 すべてのグラフと表にラベルを付けてください。
  • #4 プレゼンテーションの概要を述べ、 主要なトピックとその重要性を説明します。 主要なトピックをそれぞれ紹介します。 参加者にロード マップを示すために、 プレゼンテーション全体を通じて、 次に説明する特定のトピックを強調表示して、この概要スライドを繰り返し表示することができます。
  • #5 これは、切り替えを使用した 概要スライドの例です。
  • #6 これは、切り替えを使用した 概要スライドの例です。
  • #7 Generics機能:コンパイル時に型指定されるようなクラス 4種のコレクション:Map、Pair、Set、Vector Imm:Immutable(書き込み不可能な) Nullを許容するしないは、変数の前に”?”を付けることで区別
  • #8 トレース型のJITコンパイル手法:インタプリタによるコード実行中に頻繁に利用される処理を記録し、その部分をネイティブコードにコンパイルする 4種のコレクション:Map、Pair、Set、Vector AST:Abstract Syntax Tree=&amp;gt;抽象構文木 PHPコードからASTを構築した上で、それをもとにしてHipHopバイトコード(HHBC)と呼ばれる中間コードを生成
  • #24 プレゼンテーションは簡潔かつ明瞭ですか? 余分なコンテンツは付録に移動することを検討してください。 付録スライドを使用して、質疑応答時に参照するコンテンツや、参加者が今後より詳しい情報を調べるのに役立つコンテンツを記載します。