Phalconを使ってみた感想と
「最速」であるという事について
大谷 祐司
株式会社インテリジェンス
マーケティング統轄本部
自己紹介
・山口県下関出身の33歳
・マーケティング部署のシステムチームに所属。
・趣味は車とプログラミングです。
・3月にパパになりました。
アジェンダ
・Phalconについて
・実際に開発で使ってみた感想
・「最速」について考えてみた
Phalconについて
人気急上昇中!
人気急上昇中!
バージョンUPの履歴
⇒だいぶ落ち着いてきた印象。
127日
48日
62日
314日
Ver0.4.5:2012/11/15
Ver1.0.0:2013/03/22
Ver1.1.0:2013/05/09
Ver1.2.0:2013/07/10
Ver1.3.0:2014/05/20
2.0リリース予定!!
誰が開発しているのか?
特定の個人や企業が開発しているのではなく、
PhalconTeamがコミュニティとして開発を行っています。
http://phalconphp.com/en/team
実際に開発で使ってみた感想
小規模な社内システムで実験的に採用。
人の地道な手作業を自動化するシステム。
画面数:6
バッチ:2本
DBのテーブル数:8
開発者:1人 (私です)
どれくらいの規模のシステム?
使ってみた感想
フレームワーク本体に手を入れる事が困難
⇒誰かがこっそり改造する事は無いが、
ソースの確認が難しい(C言語で書かれている)
※Phalcon2系はZephirという独自言語で実装
使ってみた感想
シンプルな設定ファイルが使いやすい。
・config.php : 設定を配列でConfigクラスに与える。
DBの設定やソースのディレクトリ等。
・loader.php : オートローダーの設定
・services.php : DIコンテナへ機能の設定
ただし環境毎の個別設定は用意されていない。
独自テンプレートエンジンの「volt」
⇒twigの経験があったのでスムーズに利用できた。
まずはフレームワークのスケルトンをコマンドで生成。
⇒phalcon create-project XXX
extensionはcomposerで管理できるので、スムーズに開発できる。
バッチ作成は PhalconCLITaskを継承して簡単に作成可能。
画面用に作成したModelもそのまま利用できる。
使ってみた感想
ハマったところ
DBエラーやコンパイルエラー等、ログ出力の設定が必要。
詳細に設定できる反面、使うまでに準備が必要。
参考情報はまだまだ少なく、かつ英語のものが多い。
直接SQLを実行する方法を見つけるのにも苦労した。
ごくたまにエラーが起きるのですが、フレームワーク内部で
起こったエラーに対して原因特定や対策が困難。
「最速」について考えてみた
Phalconの特徴
PHP extensionとして実装されているために、
・実行速度が速い
・メモリ使用量が少ない
という特徴を持っている。
なぜPHP extensionだと速いのか?
ソースコード
中間コード
実行
コンパイル
アクセラレータ
PHP実行環境
Phalcon
PHP実行環境に組み込むので、速く動作する。
普段利用しているFuelPHPと
Phalconの速度比較を行い、
実際にどれくらい速いか
計測してみました。
計測条件
・PHP5.5/MySQL5.6
・DBから1000レコードをSelectして
結果を画面表示するWebシステム
・Apacheログのレスポンスタイムで、
5回の計測を行った平均を使用
FuelPHP結果
DBアクセス 時間(マイクロ秒) メモリ(bite)
標準DB 104,539 11,294,944
PDO 156,635 17,780,272
ORM 779,926 11,155,696
DBアクセス 時間(マイクロ秒) メモリ(bite)
標準DB 87,393 9,822,952
PDO 139,650 16,569,016
ORM 744,167 9,477,896
OPcache Off
OPcache On
Phalcon結果
DBアクセス 時間(マイクロ秒) メモリ(bite)
PDO 11,521 4,428,728
PHQL 47,367 6,723,480
ORM 46,287 6,721,464
SimpleQuery 45,182 6,702,584
DBアクセス 時間(マイクロ秒) メモリ(bite)
PDO 10,921 4,401,960
PHQL 45,778 6,690,264
ORM 46,391 6,688,328
SimpleQuery 43,177 6,702,584
OPcache Off
OPcache On
PDOの利用で
Phalconが約8倍速い結果に
FuelPHP Phalcon
10,92187,393
単位:マイクロ秒
ORMを使うと、約16倍の速度差
単位:マイクロ秒
FuelPHP Phalcon
46,391744,167
メモリ使用量も約 2/3。
FuelPHP Phalcon
4,402kb6,668kb
※ORM利用時
確かに速かった!!
・チームとしてメインはしばらくFuelPHPのままだと思う。
⇒採用実績、情報の多さ、経験者の多さから。
・パフォーマンスが求められるシステムに採用していきたい。
・これからもっと存在感を出してくると思うので、
しっかり情報をキャッチしたい。特に2.0は要注目。
これからもPhalconを使うか?
ご清聴ありがとうございました。

Phalcon勉強会資料