PHP Extension – eAccelerator v0.9.5.2

本記事は最終更新日より 1 年以上経過しております。
スポンサーリンク

6/30 日の記事「PHP5 でアクセラレーターをかます。」で書いたこのアクセラレーター。
今年 9/3 にはもうバグフィックスが行われた v0.9.5.2 がリリースされていた。
Fix されたソースの差分を見たら思わず「おい~!」というような比較演算子のミスがあったので
これはアップデートしておいた方が良いかも。てなわけでやっておきますた。

手順は先日かいた記事とまったくもって同じで ok!

# wget http://bart.eaccelerator.net/source/0.9.5.2/eaccelerator-0.9.5.2.tar.bz2
# tar jxvf ./eaccelerator-0.9.5.2.tar.bz2
# cd eaccelerator-0.9.5.2
# phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
# ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/bin/php-config

と、ここまでは良かったんだけど configure のログみたらこんなんが出ていたことに気がついた。

checking for re2c... no
configure: WARNING: You will need re2c 0.9.11 or later if you want to regenerate PHP parsers.

if you want to だから不要であればシカトこいてもいいんだけど、気になるので入れた。

# wget http://nchc.dl.sourceforge.net/sourceforge/re2c/re2c-0.12.3.tar.gz
# tar xzvf re2c-0.12.3.tar.gz
# cd re2c-0.12.3
# ./configure
# make
# make install

configure –help してみても特に必要なオプションもないようなのでただの打ち込みで完了ですた。
インストール先はデフォルトで /usr/local/bin/re2c となる。

ここで再度 eAccelerator の configure に戻る。

# ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/bin/php-config
# make
# make install
..
..
Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20060613/

とこんな感じで完了。
また「/usr/local/lib/php/extensions/no-debug-non-zts-20060613/」以下に
「eaccelerator.so」がインスコされた。
少々パスが長いなということで、もう 1 階層上に置いてやることとした。

# cd /usr/local/lib/php/extensions/no-debug-non-zts-20060613/
# cp -p ./eaccelerator.so ../

パスも変えたことだから php.ini にも変更を加えてあげる。

# vi /usr/local/lib/php.ini
[eaccelerator]
zend_extension="/usr/local/lib/php/extensions/eaccelerator.so"
eaccelerator.shm_size = "32"
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"

だいたいこんな感じで。
そんでお約束の確認と。

# php -v
PHP 5.2.3 (cli) (built: Jun 15 2007 02:28:58)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
    with eAccelerator v0.9.5.2, Copyright (c) 2004-2006 eAccelerator, by eAccelerator

はいこれで完了と。
Linux は Source からのコンパイルが楽でいい…。

補足で書いておきます。
特定ディレクトリ以下の PHP Script に対して eAccelerator によるキャッシングを
行わせたくない場合、「.htaccess」に以下 2 行を追記することで避けることが出来る。
利用目的は eAccelerator があると動作しなくなる PHP Script がある場合ですかな。
Segamentation fault と error.log に流れ込みますです。

$ cat .htaccess
php_flag eaccelerator.enable 0
php_flag eaccelerator.optimizer 0
スポンサーリンク