KohanaのCacheインスタンスは複数立ち上げられない?
前回やったmemcachedに加えてファイルキャッシュを以下のように追加しようした。
- application/cache/config.php
- defaultの下に以下を追記
$config['filecache'] = array
(
'driver' => 'file',//ドライバーにfileを指定
'params' => '../application/cache',//キャッシュファイルを置くdirectory
'lifetime' => 0,
'requests' => -1
);
後はmemcacheとどのように以下のようにインスタンスを立ち上げて、get/putしてくれるかなぁーと思ったんです。
$cache = Cache::instance('filecache');
$image = $cache->get($key);
$cache->put($key, $val, NULL, $lifetime)
ところがどっこい。
既に別のインスタンスを指定してると(今回はmemcache)、どうやら上のように呼んでも先に宣言したほうのオブジェクトが生成されてしまうようです。。
そこでソースを読んでみると
- system/libraries/driver/Cache.php
public static function instance($config = array())
{
static $obj;// Create the Cache instance
($obj === NULL) and $obj = new Cache($config);return $obj;
}
$objがスタティックじゃまいか。。これじゃあ、初期化されないよ。
仕方が無く、以下のように直接newしてinstance関数は使わないようにした。
$cache = new Cache('filecache');
$image = $cache->get($key);
$cache->put($key, $val, NULL, $lifetime)