LAMP環境(Linux-Apache httpd-MySQL-PHP)におけるWebアプリケーションのパフォーマンスチューニングにおいて、ここではPHPに関するポイントを整理しておきたいと思います。
なお、記事投稿時点でのPHPは、バージョン5.3.9です。
1.実行コードキャッシュ
コンパイル言語ではなくインタープリター言語であるPHPでは、同じコードの構文解析・コンパイルを繰り返さないことがパフォーマンス上の重要なポイントです。
そこで、構文解析・コンパイル後のコード(実行コード)をキャッシュすることで、同じコードを使用する二度目以降のリクエストについては、キャッシュされた実行コードを使用することができるようになります。
そのような実行コードのキャッシュ機能は、
- eAccelerator
- APC(Alternative PHP Cache)
を利用することで実現できます。
eAcceleratorについては『PHP~パフォーマンス向上策』『PHP~パフォーマンス向上策(続報)』をご覧ください。
2.PHPの設定
下表のように、php.iniのパラメータのいくつかを適切に設定することが重要です。
phpiniの変更後は、httpdを再起動もしくは設定再読込をして、設定を反映させる必要があります。
php.iniパラメータ | 設定の説明 | 設定例 |
---|---|---|
register_globals | 無効にする。 | register_globals = Off |
magic_quotes_gpc | 無効にする。 | magic_quotes_gpc = Off |
magic_quotes_runtime | 無効にする。 | magic_quotes_runtime = Off |
magic_quotes_sybase | 無効にする。 | magic_quotes_sybase = Off |
always_populate_raw_post_data | 無効にする。 | always_populate_raw_post_data = Off |
output_buffering | 有効にする。推奨設定値は4096バイトとなっています。 | output_buffering = 4096(単位:バイト) |
realpath_cache_size | 必要に応じて設定する。PHPがオープンするファイル数が多い場合には、この値を増やすとファイル操作のパフォーマンス向上の効果が期待できます。 | realpath_cache_size = 16k(単位:バイト) |
realpath_cache_ttl | 必要に応じて設定する。PHPがオープンするファイルを変更する頻度が少ない場合には、この値を増やすとファイル操作のパフォーマンス向上の効果が期待できます。 | realpath_cache_ttl = 3600(単位:秒) |
variables_order | “GPCS”に設定する。 | variables_order = “GPCS” |
date.timezone | タイムゾーンを設定する。 | date.timezone = Asia/Tokyo |
※この対応および記事に関しては、次の情報を参考にさせていただきました。
LAMP アプリケーションのパフォーマンス・チューニングを行う 5 つの簡単な方法