更新日: 2011-07-20 16:33:01

PHP高速化 --eAccelerator の構築

著者: benijake-T

編集者: OKWAVE Guideスタッフ

閲覧数: 733

Okgn btn gudie info favorite

0

関連タグ:

はじめに

PHP を利用したサイトのレスポンスをよくする為の方法です。

アクセラレータの概要
アクセラレータはスクリプトを解析した結果を中間コード(バイトコード)の状態で共有メモリ上にキャッシュします。
スクリプトの2回目以降の実行は構文解析を行わずに, キャッシュされた中間コードをダイレクトに読み込むことで処理を高速化しています。
巨大なソースファイルや多数のファイルをインクルードしているケースでは, アクセラレータは絶大な威力を発揮します。

STEP1 ■ インストールとダウンロード

ダウンロード

SourceForge:eAcceleratorから最新パッケージをダウンロードします。
現時点では、Release-0.9.5.3 (2008/12/24)が最新版です。

# cd /usr/local/src
# wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.zip

STEP2 展開

# unzip eaccelerator-0.9.5.3.zip

STEP3 移動

# cd eaccelerator-0.9.5.3

STEP4 拡張モジュールをビルド

# phpize

STEP5 コンパイル

# ./configure --enable-eaccelerator=shared --with-php-config=/usr/bin/php-config


※ php-config の場所が判らない場合

# locate php-config

もしくは

# find / -name php-config

STEP6 インストール

# make && make install



----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/src/eaccelerator-0.9.5.3/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
Don't forget to run 'make test'.

Installing shared extensions: /usr/lib/php/modules/




extension_dir 以下に eaccelerator.so がインストールされます。
※ make 時に libtool 関係のエラーがでた場合は, export SED=sed で環境変数を設定してやるとうまくいくかも知れません。
また --enable-versioning で PHP をコンパイルすると, httpd 起動時に undefined symbol: _zval_ptr_dtor というエラーがでる場合がありますので, eAccelerator を導入する際には --disable-versioning をつけてコンパイルする方が無難です。

STEP7 ■ 設定

php.ini に eAccelerator の設定項目を追加します。

# vi /etc/php.ini
[eaccelerator]
zend_extension="/usr/lib/php/module/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"

STEP8 キャッシュファイルディレクトリの作成

# mkdir -p /usr/local/cache/eaccelerator

STEP9 パーミッションおよびオーナー変更

# chown apache. /usr/local/cache/eaccelerator/
# chmod 755 /usr/local/cache/eaccelerator

STEP10 ■ 動作確認

Apache 再起動

# /etc/init.d/httpd restart

STEP11 # インストール確認

# php -v
PHP 5.2.6 (cli) (built: May 8 2008 08:38:47)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
with eAccelerator v0.9.5.3, Copyright (c) 2004-2006 eAccelerator, by eAccelerator

STEP12 # ディスクキャッシュ有効(shm_disk等)の確認

* cache_dir に [0-9]|[a-f] の名前でディレクトリが作成され、さらに[0-9]|[a-f]のディレクトリが存在し、"eaccelerator-*****.********"というキャッシュファイルが生成されるかを確認

STEP13 キャッシュヒットの確認

* eaccelerator.debug=1 で error_log を確認して, EACCELERATOR hit: "xxx" と表示されていたら OK

【PR】

このガイドは役に立ちましたか?ガイドの著者にお礼を伝えよう!

Okgn btn gudie info thunks b

67

関連タグ:

当ガイドは作成日時点での情報です。ガイド内容の実施はご自身の責任の元、ご利用いただきますようお願いいたします。

このガイドを通報する