- 締切済み
PHPのCPU負荷について
PHPで運営しているサイトがあり、1日50万PVを処理しています。 そのサイトのアクセスは大きく分けて、コンテンツの一覧ページ、コンテンツの詳細ページがあります。 そこでなのですが、以下のどちらの方がCPU負荷が少ないでしょうか? ( A ) 一覧ページ、詳細ページ、共通で使用するクラスなどをひとつのPHPファイルにして、まとめて処理 ( B ) 一覧ページ用PHPファイル、詳細ページ用PHPファイル、共通で使用するクラス用PHPファイルに分け、 必要なファイルだけインクルードなどして処理 つまり、A の場合はインクルードなどのコストはゼロだが、PHPファイル内に無駄なコードがかなり含まれている。 対して B はインクルードのコストはあるものの、無駄なコードはゼロである。 A , B ではどちらが負荷が少ないでしょうか?管理の手間などは考慮せず、負荷だけで考えた場合をお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- mizutaki
- ベストアンサー率33% (111/333)
回答No.1
どれくらいの規模のPHPシステムを組んでいるのかで変わってくるとは思いますが、 ファイルのインクルード数を減らして、 実行時に参照されるPHPのソースコード量が出来るだけ小さい方が 負荷がかかりにくい傾向になります。 CPUの負荷を減らしたいのであれば、 ソースコードを細かく分割して、実行にどの程度時間がかかっているのかを調べてみるのが良いです。 調べた上で、時間のかかっている部分から処理を改善するのが良いですね。 ただ50万アクセスあるとした場合、ソースコード分析よりも APC(Alternative PHP Cache)の導入や ソースコードを丸ごと見直して、効率化する方が効果的である可能性が高いです。
補足
ご回答ありがとうございます。 現在はひとつのファイルで処理をしているのですが、サーバーの負荷が気になっております。 PHPのコードは3500行ほどでファイルサイズは170KBほどになります。 PHPで生成されたページは一定時間キャッシュしており、キャッシュが存在した場合、 該当キャッシュを少しだけ加工してから出力し、処理終了となっています。 また、キャッシュのヒット率を調べたところ、80%ほどありました。 キャッシュがヒットした場合は、処理内容が大幅に減るわけで、その場合、コードの6~7割は、 使用しないコードとなります。これが非常に無駄だと考えています。 キャッシュが存在しない場合だけ使用する6~7割のコードを別ファイルにしておき、 必要な場合だけインクルードなどで取り出せば、CPU負荷が下がるのではないか?と考えました。 どう思われますか?