[PHP] PHP5.3.0でのアクセラレータ導入

2009年9 月22日  |  Written by matsumoto  |  under PHP Yahoo!ブックマークに登録    はてなブックマーク - [PHP] PHP5.3.0でのアクセラレータ導入

PHP5.3自体のインストールについては
[PHP] CentOS5.3 で PHP5.3をインストール(YUM風オプションで)をご覧下さい。


こんにちは、松本です。シルバーウィークの天気 も全く関係ない引きこもり状態で、だらだらと経過中です。

PHP5.3.0 もリリースされて少し経ちましたが、早くも PHP5.3.1-rc1 がリリースされ、例によって矢継ぎ早にアップデートされそうな予感です。

前回に引き続き、PHPのアクセラレータ導入です。

PHP5.3で利用できるアクセラレータ

PHP5.3系のアクセラレータは、eAcceleratorAPCXCache などが対応しています。

一番気になる速度面ですが、どのアクセラレータもそこまで大きな違いはありません。
自分では、eAcceleratorをよく利用しています。

PHP5.3ではありませんが、お祭りコムリラックスライト でも eAcceleratorを導入しています。

なぜ eAccelerator なのか? という部分ですが、自分で実測した限りでは APC よりも eAccelerator の方が httpdのプロセスサイズが小さく見えました。

また、VPSなどのメモリ容量が小さい環境での運用でもshmとdiskをどちらも併用できる eAccelerator が、ある程度の可用性を保つ面でも良いかなと思い採用しています。

前回の導入時にややハマった PHP5.3でのAPCの導入 ですが、現在は APC-3.1.3p1 がリリースされ、PHP5.3でもハマらずにインストールできました。

eAccelerator

eAcceleratorの公式サイト から、ソースをダウンロードします。
サイトの下部にバージョン別のリリースがありますので、一番新しいものを選択します。

PHP5.2までは 0.9.5.3 でも動作しますが、PHP5.3以降は 0.9.6-rc1 以降のバージョンでの動作となります

コンパイル→インストール

phpizeが入っていない場合、前もってインストールしておきます。

yum -y install php-devel

ソースコードからコンパイルしてインストールします

mkdir /usr/local/src
cd /usr/local/src
wget http://bart.eaccelerator.net/source/0.9.6/eaccelerator-0.9.6-rc1.tar.bz2
tar jxvf eaccelerator-0.9.6-rc1.tar.bz2
cd eaccelerator-0.9.6-rc1

phpize
./configure --enable-eaccelerator=shared
export SED=sed
sudo make install

インストールが完了したら、キャッシュ用のディレクトリを作成します。

# mkdir /var/php-cache/eaccelerator
# chmod 777 /var/php-cache/eaccelerator

php.iniでの設定

次にphp.iniに設定を定義します。

vim /etc/php.ini

※ XDebugをインストールしている場合、XDebugの記述より以前に記述します。

[eaccelerator]
zend_extension="/path/to/eaccelerator.so"
eaccelerator.shm_size = "32"
eaccelerator.cache_dir = "/var/php-cache/eaccelerator"
eaccelerator.enable = "1"
eaccelerator.optimizer = "1"
eaccelerator.check_mtime = "1"
eaccelerator.debug = "0"
eaccelerator.filter = ""
eaccelerator.shm_max = "0"
eaccelerator.shm_ttl = "86400"
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_extentionは eAccelerator がインストールされたディレクトリをフルパスで指定します。

APC

APCも試しています。前回の記事に引き続きですが、検証しまくりです。eAcceleratorを入れるよりもプロセスサイズが大きめに出るのが気になりますが・・・

あと、これは自分の環境だけかもしれませんが、APCが効いている状態で、ファイルを書き換えると(statが変わると) httpdがCoreDumpしていまして、そちらも原因を追っているところです。

インストール

APCのインストールも簡単です。
peclコマンドでも可能ですが、ここではeAcceleratorと同様にソースをダウンロードし、インストールします。

cd /usr/local/src
wget http://pecl.php.net/get/APC-3.1.3p1.tgz
tar xvzf APC-3.1.3p1.tgz
cd APC-3.1.3p1

 phpize
 ./configure --enable-apc

sudo make install

php.iniでの設定

大体以下のような感じでしょうか。上記eAcceleratorと同等の機能を定義しています。

vim /etc/php.ini
[APC]
extension=apc.so
apc.mode = shm
apc.check_compiled_source = 1
apc.check_mtime = 1
apc.enabled=1
apc.shm_segments=1
apc.shm_size=30
apc.num_files_hint=100
apc.user_entries_hint=640000
apc.ttl=86400
apc.user_ttl=86400
apc.gc_ttl=86400

現在コメントはありません | コメントの投稿はこちら

コメントを書き込む

コメント本文

※コメントのフォーム内で以下のタグがご利用いただけます
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

私はチーム・マイナス6%です