2010年7月6日火曜日

【PHP】LAMPPの環境にAPCをコンパイルしてインストール

WordpressでObject Cacheを有効にしたときに(前の記事を参照)、APC(Alternative PHP Cache)の挙動がおかしかったので最新バージョンをコンパイルしてインストールしたときのメモ。

環境はLinux(CentOS), Xampp for linux(LAMPP) 1.7.1

現象としてはページ一覧のウィジェットを表示したときに(キャッシュがない)初期表示したときは正常に表示されるが、2回目移行は表示できない。

コードでいうと/wp-includes/post.phpの2368行目あたりの

wp_cache_set( 'get_pages', $cache, 'posts' );

したときにうまくキャッシュに保存されないみたい。

このときのAPCバージョンは3.0.19

最新バージョンはここからダウンロード。この時点では3.1.3p1

適当な場所において解凍してコンパイルしてインストール(アップグレード)

# tar xzvf APC-3.1.3p1.tgz
# cd APC-3.1.3p1
# /opt/lampp/bin/phpize
# ./configure --enable-apc --with-php-config=/opt/lampp/bin/php-config
# make 
# make install

完了すると次のようなメッセージ

image

php.iniに下記を追加
extension="apc.so"

これでlamppを再起動。
# etc/rc.d/init.d/lampp restart

php_infoを開いてみてapcのバージョンが上がっていたら成功。

問題の現象も直っているみたいで良かった。betaバージョンだし他の問題が起きなければいいけど。

<2010/09/23 追記>
APC 3.1.3p1は時間が経ってもキャッシュが残ったままのバグがあるので、3.1.4にした方がいい。

<2010/10/15 追記>
php.iniの設定例

extension="apc.so"
apc.shm_size="128M"
apc.ttl="3600"
apc.user_ttl="3600"
apc.slam_defense="Off"

< 2011/06/10 Modified >
OSが64bitだと
on-zts-20090626/apc.so: wrong ELF class: ELFCLASS64 in Unknown on line 0
のErrorが起きるので、Server環境は素直にyum経由で構築した方がよさそう。

 

<関連記事>

WordpressでAPCを使ったObject Cacheを有効にする
【PHPチューニング】APCをインストールしてWordpressを高速化
コメントを投稿
Related Posts Plugin for WordPress, Blogger...

Blog Archives