[PHP] PHP5.3.0でのアクセラレータ導入
PHP5.3自体のインストールについては
[PHP] CentOS5.3 で PHP5.3をインストール(YUM風オプションで)をご覧下さい。
こんにちは、松本です。シルバーウィークの天気 も全く関係ない引きこもり状態で、だらだらと経過中です。
PHP5.3.0 もリリースされて少し経ちましたが、早くも PHP5.3.1-rc1 がリリースされ、例によって矢継ぎ早にアップデートされそうな予感です。
前回に引き続き、PHPのアクセラレータ導入です。
PHP5.3で利用できるアクセラレータ
PHP5.3系のアクセラレータは、eAccelerator 、 APC 、 XCache などが対応しています。
一番気になる速度面ですが、どのアクセラレータもそこまで大きな違いはありません。
自分では、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








