PHPカンファレンス2009 スペシャルレポート

2日目,テックデイレポート[随時更新]

この記事を読むのに必要な時間:およそ 7 分

Brian Shireさん「APCによるハイパフォーマンスの実現」

海外ゲスト2人目は,絶大な人気を誇るSNS,FacebookのBrian ShireによるAPCの紹介です。

APCは他のエクステンションと同様にpeclでインストールすることができます。十分なメモリを割り当てることが重要になっています。

キャッシュには大きく分けて2つあり、1つ目はOpcodeそのもののキャッシュ、2つめはUserVariableCacheです。UserVariableCacheはどんなPHPオブジェクトでもキャッシュすることができます。キャッシュには大きな配列などではなく、小さな値を入れた方がいいそうです。

APCのパフォーマンスチューニングにはいくつかの方法があり、APCをそのまま使うのではなく、ロックシステムを例にとるとデフォルトではロックにはFileLockが使われています。FacebookでSpinLockを使用しているそうです。LazyLoadingもFacebookではかなり重要な役目を果たしているそうです。

現在開発中のAPC4.0ではLeast Frequently Used(LFU)という方式も組み込まれます。

もうひとつ現在開発中の機能として、No-copy Shared cacheというものがあります。Opcodeを共有メモリからローカルプロセスにコピーしてから実行していましたが、これを使うと共有メモリにおいたままで実行できるようになります。コピーの手間が省けるので、他のOpcodeキャッシュに比べてかなり有利になるそうです。

PHP6にはAPCが取り入れられる予定になっているそうで、PHP6からは更なる高速化が期待できそうです。

会場からの質問で、設定時のポイントは?という質問に、まずスタックのオプション、つぎにロッキング、またUserVariableCacheを設定してあげるとさらに効率が上がるのではないかと話されていました。

APCを導入した方がいいサイトは?という質問では、PHPを導入しているサイトの多くは効果がある。大規模なシステムのサイト、ユーザーキャッシュを有効に使っているサイトではさらに高速化につながります。facebookのような本質的にリアルタイム性の求められるようなサイトにも向いている、とのことです。

画像

画像

新原雅司さん「PHP を見える化する」

PHPの初級者向けの講演で、新原雅司さんには基本的なデバッグ方法から、debug_zval_dumpという関数で変数の内部がどうなっているのか調べる方法を話して頂きました。

プロファイルに関しては、Xdebugを使ったプロファイルの取り方を、デモを交えてわかりやすく紹介してもらいました。

  • Windows環境での「Xdebug + WinCacheGrid」
  • Web上で動く「Webgrind」
  • facebookで開発されていて、PHP内部のコールグラフを表示できる「XHProf」
  • Xdebugの機能である「Function Traces」

画像

画像

mocapapa「はじめてのyii」

フレームワーク「Yii」についてmocapapaこと桜井厚さんの発表です。

mocapapaさん自身はCodeIgniter,ちいたんといった他のフレームワークを使用してきたそうですが,yii 1.0のリリース記事を見たのをきっかけとして,yiiを利用しはじめたそうです。

また,LOCAL PHP部 札幌勉強会02においてid:nazoneさんが発表した2009年のPHPフレームワークなども参考になることが言及されました。

YiiはAPC(PHPコードキャッシュ/最適化)との相性がよく,APCを利用した場合,他のフレームワークと比較して,より大幅に高速になるということです。

以前はフレームワークの比較として,決定的な方法がありませんでしたが「同じアプリに対して違うフレームワークで実装して比較してみるしかない」という企画"PHP Framework Fight!"を参考に「オフ会くん」という宴会くんクローンをYii,ちいたん,CodeIgniterを比較したところ,一部機能のソースコードの行数はそれぞれ13行,34行,49行で記述できたということです。

Yiiは新しいものが好きな方,先取りしたい方,英語が得意な方,速度を重視する方におすすめということですが,ユーザーベースが少ないので,初心者にはおすすめしにくいとのことでした。

画像

画像

田中康一さん「PHPアプリケーションフレームワーク Agavi入門」

フレームワーク「Agavi」について日本Agaviユーザー会 田中康一(MugeSo)さんの発表です。

「PHP用Webアプリケーションフレームワーク」ではなく「PHP用アプリケーションフレームワーク」ということで,Webだけではなく,アプリケーション全般の開発を意識して開発されているということです。

Agavi は 2005年5月に Mojavi 3-dev からフォークされ,2005年6月にAgavi 0.9としてリリースされました。

MVCモデルに基づいた,Agaviの処理フローの解説や,それぞれの処理についての解説がありました。

IRCや,メーリングリストなどのサポートの紹介もありました。

画像

画像

辻岡国治さん「フレームワークCodeIgniterを使ってのアプリケーションプラットフォーム作成による,業務案件,アプリ開発の効率化について」

Usagi Project,日本CodeIgniterユーザ会 辻岡国治(kunitsuji)さんの発表です。

CodeIgniterは,動作が高速・制約が少ない・拡張しやすいなどの特徴があり,また,ソースコードが理解しやすいそうです。

セッションの管理,ユーザー管理,ブラウザ判別などの機能はデフォルトで存在しないか,非常に使いにくいものとなっているなど,⁠機能が足りない」と思われがちですが,これはつまり「簡単に足す」ことができるとのことです :-)

Usagi Project では開発協力者を募集しているそうです。興味がある方はそちらにも参加してみてはいかがでしょうか。

画像

画像

著者プロフィール

佐藤佳祐(さとうけいすけ)

北海道の大学に在籍し,現在は絶賛就職活動中。nequalに所属し,PEARリポジトリサービス「Openpear」開発を担当。最近はrhaco2と格闘する日々。お仕事の話,待ってます。

URLhttp://riaf.jp/


藤本洋一(ふじもとよういち)

Zend Frameworkのコミュニティ「zf-users.jp」とかやってます。nequal所属。

最近,ふとしたことから無職になってしまったため,絶賛求職中。

URLhttp://wozozo.jp/