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

25
CF-PHP-BUILD-PACK ををを HACK をををPHALCON FRAMEWORK ををををををををを 安安 安安安 2014.05.23

Upload: kenjirou-yasui

Post on 16-Nov-2014

1.568 views

Category:

Software


1 download

DESCRIPTION

 

TRANSCRIPT

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

CF-PHP-BUILD-PACK を使って、HACK アプリ、 PHALCON FRAMEWORK をデプロイしてみる

安井 健治郎2014.05.23

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

Yuipapa は、    こんな奴• yuipapa

安井 健治郎

–年齢不詳

–趣味カート・料理・プログラミング映画鑑賞・音楽鑑賞 etc.

–今年こそ浦和レッズ 命!

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

本日の発表概要• Hack とは?• cf-php-build-pack の概要• Buildpack の設定ファイルを作成する• デプロイして、試してみよう• PHP vs Hack どちらが、速い?• Phalcon framework とは?• cf-php-build-pack でカスタムエクステン

ションを追加する• 動作確認

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

Hack とは?

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

Hack とは?

Facebook より OSS としてリリースされた HHVM( HipHop Virtual Machine for PHP )向けの開発言語

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

Hack の特徴•PHP との互換性有•静的型付き言語•Null を許容するか指定可•可変引数対応•<<Override>> の明記•型へのエイリアス定義•Collections,Shapes 、 Tuples などの複合型が利用可•Imm をコレクションに付けると書き込み不可属性となる•Generics 機能の利用可

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

HHVM の特徴•PHP 用の JIT コンパイラ•PHP のコードをダイナミックにバイナリコードへと変換•トレース型の JIT コンパイル手法を採用•Facebook 社内では将来的にはすべての PHP 実行環境を hhvm に置き換える計画

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

cf-php-build-pack の概要

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

cf-php-build-pack の概要•Web サーバーは、 apache 、 nginx を選択可能•PHP 実行環境は、 PHP とHHVM ( Hack : Facebook が公開した PHP の JIT )を選択可•apache 、 nginx 、 PHP 、 hhvm のバージョンを各々設定可能•apache 、 nginx 、 PHP 、 hhvm の設定ファイルを各々設置可能•apache 、 PHP のモジュールを追加可能

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

アプリの構成

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

Buildpack 用のアプリの基本構成

/ ┳ htdocs (ドキュメントルルート) ┃ ┣ .bp-config ┳ options.json          ┃          ┣ nginx ┳fastcgi_params          ┃          ┣ php

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

Buildpack の設定ファイルを作成する

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

options.json ( Buildpackの設定ファイル)を作成する

{ "WEB_SERVER": “nginx", "PHP_VM": "php",}

残りは、デフォルト値を利用https://github.com/dmikusa-pivotal/cf-php-build-pack/blob/master/defaults/options.json

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

デプロイして、試してみよう

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

・ gcf push 時に – b オプションで明示的に buildpack を指定

gcf push hack-app –b https://github.com/dmikusa-pivotal/cf-php-build-pack.git

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

PHP vs Hack どちらが、速い?

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

PHP vs Hack どちらが、速い?

新プログラミング言語「 Hack 」スタートアップガイド [Kindle 版 ] に掲載されている、 100 万回ループ処理を行う単純なプログラムを

nginx+fastcgi+HHVM vs nginx+fastcgi+php

で実行し、処理時間を比較してみました。

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

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();

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

$ 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

あれ?

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

Hack は、お作法に則って書かれたスクリプトでないと、本来の性能は出ない

場合により、 PHP よりも遅くなることもあり得る

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

Phalcon framework とは?

・ MVC を実現する PHP の framework・ PHP の拡張モジュールとして C言語で書かれている・ developper tool がある・専用のテンプレートエンジン「 Volt 」を内蔵している

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

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

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

付録

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

リソース

• HHVM の github リポジトリhttps://github.com/facebook/hhvm

• hack コミュニティhttp://hacklang.org/

• HHVM コミュニティhttp://hhvm.com/

• Phalconhttp://phalconphp.com/ja/

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

質疑応答