[PHP] PHP5.3でAPC3.1.3をインストール
PHP5.3自体のインストールについては
[PHP] CentOS5.3 で PHP5.3をインストール(YUM風オプションで)をご覧下さい。
大変お久しぶりの更新です、DQ9をする暇も無く天変地異と闘っています。
PHP5.3がリリースされ、1ヵ月半が経ちましたが、PHP5.2までには無かった機能が山盛りですごい事になっています。
LL言語の中では今一番注目しています。
とくに 「遅延静的束縛(Late Static Bindings)」と「ガベージコレクション」にドキドキしつつ、以下2つの点に大注目しています。
遅延静的束縛(Late Static Bindings)
クラス関数で、継承先のクラスを参照できるので、ORマッパでCDBIっぽい動きを直接指定できます。
今までは、継承先で継承元のクラス関数を使うためには
$blog_article = new Data::Blog::Article; $blog_article_entries = $blog_article->retrieve_by_user($user);
などのような書き方をしていましたが、
"static"キーワードを利用する事で
$blog_entries = Data::Blog::Article->retrieve_by_user($user);
等の様な書き方が出来るようになります。
ざっくりしすぎな説明なので、次回もう少し深く解説したいと思います。
ガベージコレクション
ORマッパやMVCなどで特に起こしやすい、メモリリークですが
PHP5.3ではいい感じに処理してくれている模様です。
PHP5.3をインストールしてあるデフォルトの状態で有効になっており、
メモリリークを起こしている処理をある程度貯まった段階で開放しているようです。
また、新たに加わっている関数 gc_collect_cycles ですが、明示的にGC(ガベージコレクション)を開放してくれるとのことなので、
現在MVCの最後の処理(1サイクルが終わるタイミング)で毎回実行させるようにして、効果測定を行っています。
こちらはもう少し調査したらUPする予定です。
APC
アクセラレータのPHP5.3対応状況
PHPのアクセラレータは主に eaccelerator、APC、XCache 等かと思います。
eaccelerator
eacceleratorは最新版の0.9.6-rc1 を試してみたのですが、インストールはできるのですが、PHPの起動でエラーになってしまい、ベンチマークまでいけませんでした。
公式ページでは Support for PHP 5.3. となっているのですが・・・自分の環境がおかしいのかもしれません。
APC
pecl のRSSFeedに本日登録された APC3.1.3 ですが、
make時に apc_bin.h が無いと怒られます。
peclのサイトからダウンロードできるtgzのパッケージには確かに該当するファイルが無く、makeが通らないので
PHPのsvnサイトから apc_bin.h apc_bin.c の2つをダウンロードして利用しました。
(※何故か同一バージョンのsvn管理下にはあるようです。)
cd /usr/local/src/APC-3.1.3 wget http://svn.php.net/viewvc/pecl/apc/tags/APC_3_1_3/APC_3_1_3/apc_bin.h?revision=287245&view=co apc_bin.h wget http://svn.php.net/viewvc/pecl/apc/tags/APC_3_1_3/APC_3_1_3/apc_bin.c?view=co&content-type=text%2Fplain apc_bin.c phpize ./configure --enable-apc sudo make install
これでhttpdを再起動して phpinfoに
apc
| APC | Support enabled |
| Version | 3.1.3 |
| MMAP | Support Enabled |
| MMAP | File Mask no value |
| Locking type | pthread mutex Locks |
| Revision | $Revision: 286798 $ |
| Build Date | Aug 14 2009 18:22:56 |
と、3.1.3が表示されればまず抱え込めている状態になります。
APCの前のバージョンでは、原因不明なCoreDumpに悩まされたので・・・今回は少し調査しつつやってみたいと思います。
XCache
XCacheはまだ試してないですが、公式サイトではPHP5.3のサポートのアナウンスがあっているようです。
Zend Optimizer
APCではないのですが、 Zend Optimizer もPHP5.2までの対応となっているので、5.3の対応が待たれます・・








