PHPで作られたプログラムを高速化するための方法というのはいくつかある。
プログラムそのものには手を加えずに他のレベルで高速化する方法が一番手っ取り早い。特に金に任せてより高性能のサーバーに切り替えたり、物量作戦で多数のサーバーで運用するのがプログラムの開発者にとっては楽でいい。
しかし、現実的にはそんな湯水のごとく金を使うことなどできるわけもなく、必然的にアプリケーションレベルでの見直しが必要となる。
そうなった場合でも、PHPのレベルでの見直しではなく他のアプリケーションのレベルでの見直しでなんとかなるのであれば、そちらのほうが楽でいい。なにしろ、すでに稼働しているものを手直しするということは新たなバグを生み出す原因でもあるからだ。
しかし、これも限度がある。というか既に対策済みとなると、いよいよもってPHPのプログラムのテコ入れが必要となる。
そうなった場合に手っ取り早い解決策はキャッシュ化させるという方法だ。
とにかくあらゆる部分でキャッシュ化させる。
その中でよく使われるのが、PEARモジュールを利用したキャッシュだ。関数キャッシュなんかはわりと使いがいがあるのだが、PEARモジュールを使わないそれ以外の方法の中であまり知られていない方法に、staticを用いた方法がある。
PEARモジュールの関数キャッシュほど万能ではないが、結果が必ず同じ結果となる処理の場合にstaticを使うと便利だ。
function hoge()
{
static $ret = null;
if ($ret !== null) return $ret;
// 時間のかかる処理
$ret = 処理結果;
return $ret;
}
こんな感じで hoge()を呼び出すと、一回目は実際の処理が動くが、二回目以降はキャッシュされた値を即座に返す。
ただし、これが有効なのは一回のトランザクション処理の間だけなので、複数のトランザクションにおいてキャッシュさせたい場合には使えない。
こういう技をつかうとちょっとだけレベルが上った気分になることができるのでお得な使い方だ。
コメント