ファイル キャッシング (CFileCache) を使用して、データベース テーブルからの簡単なメッセージを表示しています。初めてページをロードするときは正しく動作しますが、ページをリロードすると次のようなエラーが発生します: include(CTimestampBehavior.php) [function.include]: failed to open stream: No such file or directory
そして、このエラーは、cache->set() で設定した TIME EXPIRATION と次のページの読み込みが 1 回だけ行われ、再度エラーが発生するまで残ります。
キャッシュを処理する私の方法は次のとおりです。
public static function getLatest()
{
//see if it is in the cache, if so, just return it
if( ($cache=Yii::app()->cache)!==null)
{
$key='TrackStar.ProjectListing.SystemMessage';
if(($sysMessage=$cache->get($key))!==false)
return $sysMessage;
}
//The system message was either not found in the cache, or
//there is no cache component defined for the application
//retrieve the system message from the database
$sysMessage = SysMessage::model()->find(array(
'order'=>'t.update_time DESC',
));
if($sysMessage != null)
{
//a valid message was found. Store it in cache for future retrievals
if(isset($key))
//$cache->set($key,$sysMessage,300);
$cache->set($key, $sysMessage, 300, new CDbCacheDependency('SELECT MAX(update_time) FROM tbl_sys_message'));
return $sysMessage;
}
else
return null;
}
次の行でエラーが発生します。
if(($sysMessage=$cache->get($key))!==false)
私は Yii とキャッシングが初めてで、それについてはわかりません。
更新: AR モデルの動作方法:
public function behaviors()
{
return array(
'CTimestampBehavior' => array(
'class' => 'zii.behaviors.CTimestampBehavior',
'createAttribute' => 'create_time',
'updateAttribute' => 'update_time',
'setUpdateOnCreate' => true,
),
);
}