« モバイルデータ通信の時代 ~ いよいよ WiMAX も | 階層クラスタリング for はてブ・タグ付けデータ »

2009.04.01

PHPの高速化@お手軽な切り札

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをnewsingに追加

さて…なにかしら作っていると、やはり「処理にかかる時間」ってのは気になると思います。

まぁ、本来はそこでコード,アルゴリズム,処理フロー等を見直したり、
DB,Webサーバ環境面のチューニングを行なったり。
はたまた運用フローを調整して処理をカットしたり…など、色々と対策を打つワケで。

ただ「それでもイマイチ軽くならない」と言った場合に使う「お手軽なカード」として、
「APC(Alteanative PHP Cache)」ってのを使ってみました。

APCってのはPHP用のアクセラレータ(機能,処理向上させる為のソフトやハードの総称)の1種でして、
他にもeAccelerator,XCache,ZendOptimizer,PHPAccelerator辺りが有名らしいですが、
とりあえず今回はAPCだけ。

APCってのは要するに何をやっているかというと―――

PHP4以降ってWebアクセスの度にZendEngineなるものでソースをコンパイルし、
生成された実行ファイルを実行してたりするんですけども。
その際に生成された中間コードをファイルなりメモリ上なりにキャッシュとしてとっておいて、
該当するソースファイルが更新されるまでの間それを使うことで、
「ソースからのコンパイル」の手間を省く…ってなシロモノ。

というワケで試してみるまでの手順なんですが、
各所のブログ記事を見ると「yum install apc」一発で終わってる方の多いこと多いこと…

というワケで敢えてソースから入れてみました。

wget http://pecl.php.net/get/APC-3.0.19.tgz
cp ./APC-3.0.19.tgz /usr/local/src/
cd /usr/local/src/
tar zxvf ./APC-3.0.19.tgz
cd ./APC-3.0.19
phpize ←phpizeが無い人は「yum -y install php-devel」で
./configure –with-apxs
make
make install

まぁ、普通(?)です。
あとは、php.ini に―――

extension=apc.so
apc.enabled=1

を追記してapache再起動。(他は「未記入=デフォルト設定」)
「phpino();」「php -i | grep apc」辺りで、apc関連が表示されればインストールは完了。

試しに「Apache JMeter」で「素のEC-CUBEの商品一覧画面」を呼んだ結果を
「apc.enabled=1」「apc.enabled=0」で比較してみたんですが4割くらい早くなってました。

「install~設定」の手間を考えると、非常にありがたいシロモノかと。
ただ、使ってみて―――

 1.設定によっては手動でキャッシュを消す手順を確認しておかないと
  「ファイル更新したのに反映されない」ことも?
 2.最初からAPCを使っていると、それ以前に行なうべき努めが疎かになりそう

なんてコトを思いました。
やはり基本は自力でコード,処理の最適化を行ない、
その上で「最後の隠し味」的に使うべきかな…と。

Trackback URL

Comment & Trackback

No comments.

Comment feed

Comment





XHTML: You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>