0

ファイル キャッシング (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,
                ),
            );
        }
4

1 に答える 1

1

これは、次のいずれかの問題のようです。

  • Framework/zii/behaviors/CTimestampBehavior.php がありません
  • Framework/zii/behaviors/CTimestampBehavior.php には、サーバー ユーザーが読み取るための適切な権限がありません
  • opcode キャッシュ (APC?) を使用しており、その端にいくつかの問題があります (ただし、これに関するレポートはランダムに発生するようです)。無効にしてみてください。
  • なんらかの理由で、Yii はあなたの zii ルートをインポートしません

いずれにしても、「zii.behaviors.CTimestampBehavior」を main.php 構成ファイルの「インポート」セクションに追加するという回避策を試すことをお勧めします。または、単純に Yii::import('zii.behaviors.CTimestampBehavior'); を呼び出します。あなたの機能で。うまくいけば、時間があるときに問題を深く掘り下げながら作業を続けることができます。

そうでない場合は、上記を調査できます(少なくともここに来る人は、作業するためのより多くの情報を入手できます)

于 2013-03-07T00:56:43.637 に答える