旅するえんじにあ - Engineers to Travel -

旅するエンジニアの気まま備忘録

【Linux】APCを使ってPHPの高速化を図る

環境を構築している時にAPCってのがあった。 なんだろう・・・って思ってたんですが 昔よくAPCって聞いたなぁとでも、PHP5.5からは関係ないから気にしなくていいよみたいなことがあって 調べてなかったので。

APCっていうのはなんぞやっていうのがPHPのドキュメントにありました。

Alternative PHP Cache (APC) は、PHP の実行コードをキャッシュする仕組みで、 フリーかつオープンに使用できます。
PHP の中間コードのキャッシュ・最適化を行うための、 フリーでオープンかつ堅牢なフレームワークを提供するということを目標としています。

要は都度中間コードでコンパイルを行っているんだけど メモリにキャッシュとして保存して、高速化を図るよって話みたい。

ちなみにPHP5.5からはデフォルトでOPcacheっていうのがあるのでAPC使わなくても高速みたい。 だから使わなくなるって話だったのか。 OPcacheについてはまた機会があれば調べようかな。 まずはAPCインストールからだなぁと。

PHPのバージョンが5.4なので、APCについては3.1.10以降じゃないといけないみたい。 今回はbetaですが、最新版の3.1.13を探してきました。

# wget http://pecl.php.net/get/APC-3.1.13.tgz
# tar zxvf APC-3.1.13.tgz
# cd APC-3.1.13
# phpize
# ./configure --enable-apc --with-php-config=[php-configのPath]
# make
# make test
# make install

さらっとソースからのインサートに必要なコマンドを羅列しました。 ./configureで指定している--wuth-php-config=についてはphp-configのPathを入れてください。 わからない場合は

find / -name '*php-config*' -print

上記のコマンドを実行すればpathが出てくると思います。 自分の場合は/usr/bin/php-configがPathでした。

次にAPCを有効にするためにphp.iniの設定に追記します。

;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

; add apc
extension=apc.so

どこに書いてもOKです。 とりあえず自分はModule Settingsの中に書きました。

設定が終わったらApacheを再起動します。

# service httpd restart

設定が反映されているか確認します。

php -m | grep apc
apc

apcと表示されれば設定が有効になっています。

出てこない場合は、間違ったphp.iniに設定を書いている可能性があります。

APCを使うと実行速度は早くなるけど、キャッシュする時間を長く取ると高速化はできても ソースコードを変更した時の反映に時間がかかります。 その場合APCキャッシュをクリアする必要があるみたいです。 この辺は実際使ってみてからかな。