Top/Devel/PHP/Accelerator/eAccelerator

eAcceleratorはてなブックマーク

eaccelerator.png

一度呼び出されたコンパイル済みのPHPスクリプトをキャッシュして実行速度を上げるソフトウェア。
いわゆるアクセラレーター。
Turck MMCache for PHP の派生*1ソフトウェア。

インストール

コンパイル

tar xvjf eaccelerator-0.9.5-beta1.tar.bz2
cd eaccelerator-0.9.5-beta1/
/usr/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/bin/php-config
make
make install

すると次のように表示されるので、右のパスを覚えておく。

Installing shared extensions:     /usr/lib/php4/20020429/

WEBインターフェース用のパスワードを生成*2

php -q eaccelerator_password.php

PHPにzend_extensionとして設定(付属のeaccelerator.iniを参考に)

vi /usr/local/lib/php.ini
[eaccelerator]
zend_extension="/usr/lib/php4/20020429/eaccelerator.so"
eaccelerator.shm_size = "16"
eaccelerator.cache_dir = "/var/cache/eaccelerator"
eaccelerator.enable = "1"
eaccelerator.optimizer = "1"
eaccelerator.debug = 0
eaccelerator.log_file = "/var/log/apache2/eaccelerator.log"
eaccelerator.name_space = ""
eaccelerator.check_mtime = "1"
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"

zend_extensionの行は先に覚えていたパスを使ったものに読み替えて下さい。
上で生成したパスワードも追加

eaccelerator.admin.name="yourusername"
eaccelerator.admin.password="$1$lBPC8I.y$hWT1DHuX/7Eokw/rUil2y/"

キャッシュディレクトリ作成 (www-dataはApacheの実行ユーザー)

mkdir /var/cache/eaccelerator
chown www-data.www-data /var/cache/eaccelerator

Apacheの再起動

/etc/init.d/apache2 restart

動作の様子

付属のeaccelerator.phpにブラウザでアクセスしてみると、キャッシュのヒット状況などが分かります。

性能

cubic9.com は 2004/12/16 に PHP4.3.10+eAccelerator0.9.0 にしてみました。
今のところ MMCache とあまり変わらない模様。
特に不具合は起きていませんが、オフィシャルではPHP5での不具合が報告されています。 0.9.1で修正された模様。

Amazon

*1 MMCacheが開発停止のため実質的には後継
*2 eaccelerator_password.php をサーバに上げてブラウザでアクセスしてもOK
差分 一覧