使えるシステムから使いたいシステムへ、有限会社アテージ

Phalconは、Cの拡張モジュールとして実装されていて、他のPHPのWeb Frameworkより高速ということで、試してみました。サポートしているPHPのバージョンは、5.3以降です。

インストール

phpの環境が複数インストールされている場合は、installを次のように編集します。

  • phpizeをフルパスで指定。
  • 最下行の./configureに–with-php-configオプションを追加して、php-configを指定。

php.iniに以下の行を追加してWebサーバーを再起動します。

phpinfo()にphalconの項目が表示されることを確認してインストールは完了です。

Developer Tools

Phalcon本体にはscaffoldは用意されておらず、ディレクトリ構成は自由に決められます。でもこれは良し悪しで、ディレクトリ構成などに頭を悩ませたくないという方も多いと思います。そういう方のためにDeveloper Toolsというツールがあります。今回はこのツールを使います。

プロジェクト

Developer Toolsを使ってプロジェクトを作成します。今回はtestという名前のプロジェクトにしました。

以下のファイルが生成されますので、publicをDocumentRootにしてWebサーバーを再起動します。

また、app/cacheはテンプレートのキャッシュディレクトとして使用されますので、Webサーバーからの書き込みを許可します。書き込みを許可しないと、「Volt directory can’t be written」というメッセージが表示されます。VoltというのはPhalconのテンプレートエンジンです。

Model

チュートリアルを参考にして簡単なアプリケーションを書いてみます。

データベースはMySQLを使います。以下のテーブルを作ります。

app/config/config.phpのデータベース接続の設定を環境に合わせて編集し、以下のコマンドを実行します。

app/models/User.phpというファイルが作られます。

CRUD

作成したusersテーブルを編集する画面を作成します。

app/controllers/UsersController.phpというファイルとviewsの下にテンプレートファイルがいくつか生成されます。

http://phalcon.local/users/にアクセスすると以下のページが表示されます。

このままでは、Create usersのリンクやSearchの結果ページのURLが無効になります。app/config/config.phpのbaseUriを”/”に変更します。

また、今回usersの属性にemailという項目があり、Developer Toolsが生成するコード中にEmailクラスを使用したvalidationが行われています。しかし、Emailクラスが見つからないと怒られますので、app/models/Users.phpに以下の行を追加します。

以上でusersテーブルを編集、検索画面が出来上がりました。

apache bench

apache benchでベンチマークをとってみました。

素のPHPを使って、usersテーブルからデータを取り出して表示するだけのコードのapache benchは以下の通りです。phalconがかなり遅くみえますが、phalconのコードには検索処理も含まれているためで、xhprofでプロファイリングしてみると一目瞭然です。

少々長くなってしまいましたので、他のFrameworkとの性能比較は別の機会に譲ります。