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

Post on 16-Nov-2014

1.563 views 1 download

description

 

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

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/

質疑応答