Do You PHP?    
Search Engine Optimization  php5 powerd  Valid XHTML 1.0!  Valid CSS!  このサイトのはてなブックマーク数 



last updated
2006/11/26

counter hits
since 1999/11/06


APC(Alternative PHP Cache)再び

PECLに登録されているAPC(Alternative PHP Cache)は、PHPの中間コードのキャッシュや最適化を行う拡張モジュールです。APCは前に触ったことがあり、それがいつだったか調べてみたら、なんと2002年3月!使っていた環境は、PHP4.1.1+APC1.1.0。。。にもかかわらず、何だかGIGAZINEからリンクされているようで、リンク先としては結構恥ずかしいかも。。。

ということで、再度ざっとまとめることにしました。

使用した環境

まずは確認環境ですが、CentOS4.4+PHP5.2.0です。PHPは以下のようなconfigureオプションを付けてソースからbuildしています。

●PHP5.2.0のconfigureオプション
--with-apxs2=/usr/local/apache2/bin/apxs \
--prefix=/usr/local/lib/php5 \
--with-pear=/usr/local/lib/php5/pear \
--with-config-file-path=/usr/local/lib/php5/ini/5.2.0 \
--with-config-file-scan-dir=/usr/local/lib/php5/ini.d \
--enable-zend-multibyte \
--enable-mbstring \
--enable-mbregex \
--with-dom=shared \
--with-gd=shared \
--with-jpeg-dir \
--with-png-dir \
--with-zlib-dir \
--with-ttf \
--with-freetype-dir \
--enable-gd-jis-conv \
--with-xsl=shared \
--with-oci8=shared,/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/ \
--with-pdo-oci=shared,/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/ \
--with-pdo=shared \
--enable-sockets=shared \
--with-openssl=shared \
--enable-soap=shared \
--enable-sigchild \
--enable-zip=shared \
--enable-curl=shared \
--enable-json=shared

なお、「--prefix」オプションを付けているため、phpコマンドのパスがデフォルトとは変わっていますが適宜読み替えてください。

インストール

まずはインストールですが、peclコマンドでインストールするのが一番手っ取り早いです。

# pecl install APC
#

peclコマンドでインストールできない場合は、ダウンロード後、以下のようなお決まりの手順でインストールします。2006/11/26現在の最新版はバージョン3.0.12p2です。ちなみに、今回はpeclコマンドでインストールできなかったので、後者の手順を採りました(phpizeでエラーになりました)。

$ tar zxf APC-3.0.12p2.tgz
$ cd APC-3.0.12p2
$ phpize
$ ./configure --enable-apc
$ make
$ su -
# make install
#

インストールが終わったら、拡張モジュールをロードするようphp.iniに追記します。

●iniファイルの編集
                  :
extension=apc.so
                  :

最後にApacheを再起動し、phpinfoの画面で正しくロードされている事を確認します。非常に簡単ですね。

phpinfo画面

設定項目

すでにPHPマニュアルが完訳されているので、設定に関しての情報に不自由することはないと思います。ということで、説明はPHPマニュアルに譲ります ;-)

また、デフォルト値のままでもある程度の規模までは充分に対応できる思います。ただし、PHPマニュアルにもあるとおり、

  • apc.shm_size
  • apc.stat

は、システム規模やハードウェアスペック、システム運用要件などと相談しながら決める必要があります。

●php.iniファイルの設定例
apc.shm_size=64
apc.optimization=1
apc.stat=0

APCのWebインターフェース

以前試したAPC 1.1.0(古っ!)だと、apcinfo関数が用意されていました。これは、phpinfo関数のように、APCに関連する情報を一覧表示するHTMLを出力する関数でした。APC 3.0.12では、アーカイブ中にapc.phpというPHPスクリプトが用意され、キャッシュの使用率やキャッシュされたファイルの一覧、キャッシュのクリアを行えるようになっています。eAcceleratorの管理画面と同じですね。

キャッシュされたファイルの一覧

また、GD拡張モジュールがサポートされている場合、次のようなグラフが作成され、視覚的にキャッシュ使用率を確認することができます。

キャッシュ使用率のグラフ

このapc.phpですが、最低限ADMIN_PASSWORDを変更しないと管理者向け機能が利用できませんので、適宜変更しておく必要があります。なお、apc.phpと同じディレクトリに、次のような内容でapc.conf.phpファイルを作成することで、apc.phpの各定数を上書きすることができます。

●apc.conf.phpの例
  
<?php
defaults('ADMIN_USERNAME','admin');
defaults('ADMIN_PASSWORD','apcadmin');
?>

まとめ

何年かぶりにAPCを試してみましたが、管理系が結構変わってますね。

特に管理画面はPHPスクリプト化されていましたが、モジュール本体をスリム化するのが最近の流れですかね?まあ、管理画面を使わない場合もあるでしょうし、デフォルトで使えてしまうと、セキュリティーホールになる可能性も否定できませんしね。

パフォーマンスについては、別の機会でまとめたいと思います。



About This Site |  Privacy Policy |  Contact
Copyright © 1999 - 2006 by Hideyuki SHIMOOKA all rights reserved.