phpを高速化するためxcacheとZend Optimizerを同居させる設定を調べたのでメモ。 サーバはCentOS 5です。WordPressの管理画面がもう少し速くなればいいなという目論見。
xcacheはphpの中間コードをキャッシュし、二回目以降の実行を高速化するもの。eacceleratorやAPCと同じようなソフトです。正確な測定はしてませんが約1.5~2倍ほどスピードアップし、体感でもわかる位に速くなります。
Zend OptimizerはZend社がバイナリで配布しているphpの最適化モジュールです。最適化した中間コードを生成し、最大数十パーセントほど高速化するとのことです。キャッシュ機能はない模様。実際に単体で使ってみると体感できるほどの速度向上はなさそうです。簡単に計ると10%もない程度。
前置き
開発環境、httpd-develなどが入っていること。xcacheのインストール
- 1.2.1をdownload XCache - Trac
- コンパイル&インストール
phpize --clean
phpize
./configure --enable-xcache --enable-xcache-optmize
make && make install
cp xcache.ini /etc/php.d/ - xcache.iniのxcahe.sizeを適当な値にする(うちでは12M)
Zend Optimizerのインストール
- CentOS 5のphpは5.1.6
- ダウンロードにはZend社に登録が必要です。Zend Japan - PHP ソリューション
- いくつかのバージョンのZend Optimizerがダウンロードできますが、CentOS5で使えるのは3.0.1です。新しいバージョンではうまく動作しませんでした。
- ダウンロード後、展開し、installかinstall-tty(コンソールの場合)を実行
- 若干なにやら聞いてくるので適当に。デフォルトでも問題ないかも。
- /etc/php.iniがバックアップされ/usr/local/Zend/etc/php.iniへのシンボリックリンクになります。これは元の内容にZendの設定が追加されたもの。
- apacheを再起動するか最後に聞いてくるがこれはNOで。
- 気休めかもですが以下の設定をphp.iniに追加すれば少し速くなるかもしれません。zend_optimizer.enable_loader=0
zend_optimizer.disable_licensing=1
仕上げ
このまま再起動しても同居は出来ませんでした。いろいろ調べるとxcacheがzend optimizerより前に読み込まれる必要があるようなので、
- xcache.iniの先頭の[xcache-common]セクションをphp.iniの最後のほうにある[Zend]セクションの前にコピー
- xcache.iniの中の[xcache-common]はコメントアウト
- xcacheはzend_extensionで正しく指定されていることを確認
- apache再起動 (/etc/init.d/httpd restart)
以上でxcacheとZend Optimizerの同居が出来ました。
同時に使ってもxcacheだけのときよりも心持速くなったようなならないような。正直微妙です。安定しているのかどうかはまだ不明なのでしばらく使ってみることにします。