Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524

Cache_Liteのバグか

2010/01/25 | Cache_Lite

Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524

PEARのCache_Liteはいつもよく使っているのだが、これってバグじゃないか、と思える症状に出くわした。

if(!$lines=$cacheObj->get($cacheId)){
$lines=hoge();
$cacheObj->save($lines,$cacheId);
$this->cached[$cacheId]=$lines;
}

上記の処理は、キャッシュIDを指定してキャッシュされているかどうかチェックし、キャッシュがなければhoge()関数を使ってデータを取り出して、改めてキャッシュに保存する、という処理を書いている。

この処理自体はなんの問題もなく動作する。しかしこの処理を、ひとつのスクリプト内で2回呼び出すとエラーになる。「そもそも1回取得しているデータなんだから2回も呼び出すことはないだろ」と言われるかもしれないが、例えばスクリプトをクラス化し、共通のデータをそれぞれ別の処理で使用するようなとき、2回呼び出したほうが記述がスマートな場合もある。

回避方法としては、結局データを一時的に格納する変数を作成し、そこもチェックするようスクリプトに手を加えることで対応した。これってバグだと思う。というか、もしかしたら、Cache_Liteそのものに回避方法があるのだろうか。

といっても最新版ではなくて、1.51の話(2008年6月のリリース)。現時点での最新版は2009年7月の1.7.8。新しいバージョンでチェックしてみなきゃ。っていうか、新しいバージョンを使わなきゃ・・・。



Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524
守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net

Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524