PHPにeacceleratorを導入して実行速度10倍

PHP4の時は、PHPの実行速度UPのために、PHP Acceleratorをインストールしていましたが、PHP4からPHP5にアップデートに伴い、PHPAは使えなくなりました。
代わりにZend Optimizerをインストールをしたので、それで十分だと思っていたのですが…

全然十分ではありませんでした。

PHP5.1+Zend Optimizer3の環境よりも
PHP4.3+PHP Acceleratorの方が
数倍速く動いていました。

つまりはPHP5.1に移行後は、今までよりも数倍遅くなってしまっていたということです。
簡単なPHPスクリプトならそれでも問題はありませんが、SmartyMySQLを使うOpenPNEゲーマーSNSでは致命的な遅さでした。

まずは、MySQLの設定を見直そうと、/etc/my.confを編集してバッファを増やしたりしてみましたが、動作スピードは変わりませんでした。

そこで、PHP5には対応していないPHPAに代わり、eacceleratorを導入してみることにしました。

以下、eacceleratorのインストールメモです。


管理者権限でサーバーへログイン
ダウンロードディレクトリへ移動
cd /usr/local/lib
eacceleratorファイルダウンロード
wget http://nchc.dl.sourceforge.net/sourceforge/eaccelerator/eaccelerator-0.9.5-beta2.tar.bz2
解凍
tar zxvf eaccelerator-0.9.5-beta2.tar.bz2

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error exit delayed from previous errors

エラーが表示されたので、圧縮し直して再解凍
bunzip2 eaccelerator-0.9.5-beta2.tar.bz2
gzip eaccelerator-0.9.5-beta2.tar
tar zxvf eaccelerator-0.9.5-beta2.tar.gz
移動
cd eaccelerator-0.9.5-beta2
configure設定
/usr/local/php5/bin/phpize

Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20050922
Zend Extension Api No: 220051025

./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php5/bin/php-config
makeとinstall
make
make install

Installing shared extensions: /usr/local/php5/lib/php/extensions/no-debug-non-zts-20050922/
control.php移動
mv control.php /公開ディレクトリ/
ユーザー、パスワード設定(control.phpのuser、pwを編集)
vi /公開ディレクトリ/control.php

$user = "admin";
$pw = "eAccelerator";

キャッシュディレクトリ作成
mkdir /tmp/eaccelerator
書き込み権限設定
chown apache:apache /tmp/eaccelerator/
php.ini設定
vi /usr/local/php5/php.ini
Zend Optimizerオプションより前に以下を記述
(eaccelerator.shm_sizeは、稼働後にcontrol.phpを確認しながら最適な値に変更する)

zend_extension = "/usr/local/php5/lib/php/extensions/no-debug-non-zts-20050922/eaccelerator.so"
eaccelerator.shm_size = "64"
eaccelerator.cache_dir = "/tmp/eaccelerator"
eaccelerator.enable = "1"
eaccelerator.optimizer = "1"
eaccelerator.check_mtime = "1"
eaccelerator.debug = "0"
eaccelerator.filter = ""
eaccelerator.shm_max = "0"
eaccelerator.shm_ttl = "0"
eaccelerator.shm_prune_period = "0"
eaccelerator.shm_only = "0"
eaccelerator.compress = "1"
eaccelerator.compress_level = "9"
eaccelerator.keys = "shm_and_disk"
eaccelerator.sessions = "shm_and_disk"
eaccelerator.content = "shm_and_disk"
eaccelerator.allowed_admin_path = "/公開ディレクトリ/control.php"

apache再起動
service httpd restart

以上でインストールは終了。
control.phpにアクセスすると、キャッシュ状況の確認ができます。

eacceleratorインストール後に、実際にPHPスクリプトにアクセスしてみた結果…

10倍速!


になったように感じました。(体感速度)

PHP4.3+PHP Acceleratorの時よりも
PHP5.1+Zend Optimizer3+eacceleratorの方が、

さらに数倍速くなったように感じました。(正確な時間は計測していません)