PHPにおけるstaticキャッシュに関して。
PHPのおけるキャッシュはいくつかありまして、一般的にはmemcachedなどのKVS方式のキャッシュサーバーなどを使う方法が一般的かと思います。
ここでも紹介しましたが設定情報の読み込みだったり、マスタ的な情報を保存しておく場合はmemcachedがベストだと思います。
ただ、もっと局所的な部分ではstatic変数を利用したキャッシュも使えます。
例えばループの中でデータベースからあるキーを元にデータを取り出したい。ただし、重複することもあり、その場合、何度もデータベースにアクセスしていると非常に時間と負荷がかかります。
このような場合、一度呼び出された値はキャッシュしておくと、時間と負荷を軽減することができます。
下記がコード例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
$dbUtil = データベースの接続のインスタンスです。 $count = 0; while(true){ $count++; $id = rand(1,5); echo $id . "\n"; //ここでidをキーにしてメンバーを取得します。 getMember($dbUtil, $id); if ($count > 10) { break; } } function getMember($dbUtil, $id){ //ここで値をキャッシュします。staticでなければ当然呼び出すたびに初期化されますが、staticの場合値が保存されます。 static $memberData; if (!isset($memberData[$id])) { //この処理はdbから値を取り出している処理です。 //値がない場合はここからデータを取り出します。 $res = $dbUtil->get('members', $id); $memberData[$id] = $res; } else { //キャッシュされていればキャッシュからデータを取り出します。 $res = $memberData[$id]; } } |
参考リンク