最初はDBまわり、もしくはファイル処理まわりがボトルネックになっているのかと思ったのですが、調べてみると自作のテンプレートエンジンが足を引っ張っていることが判明しました。いや、いちおうSmartyとかよりは軽いんですけどね。
とはいえ、さらに重くなってサーバーを増強しなくちゃいけない事態になるのも面倒なので、先手を打ってテンプレートエンジンのパフォーマンスチューニングを行なっておくことにしました。
PHPの文字列処理のパフォーマンスは、だいたい次のようなポイントを押さえれば、それなりに改善することができます。
・ereg系の関数は使わない。代わりにpreg系の関数を使う
・可能ならstr_replace()、strstr()といったより単純な関数を使う
・さらに可能ならstrpos()で代用する
今回はこれで30%くらい、スクリプト全体では20%くらいのパフォーマンスアップを実現できました。
テンプレート処理のパフォーマンスチューニング方法には、ほかにもキャッシングとかいろいろな手法があります。サーバーの負荷を見ながら順次こういった手法を取り入れていけばまだしばらくは大丈夫そうですが、どこかで急激にアクセスが増えたりすると追いつかなくなるかも?という気もしないでもありません。
まぁ、その前に回線がダメになるでしょうけど。



