zcyxm 2013-02-28 11:24:27 2776次浏览 3条回复 0 0 0

数据缓存不起作用,貌似还没报错,查看日志,没看出啥问题来。 大概的代码如下:

public function actionShowStorage()
{
    $page = isset ( $_REQUEST ['page'] ) ? intval ( $_REQUEST ['page'] ) : 1;
    $per_page = Main::PRODUCT_SHOW_PER_PAGE;
    $dbCriteria = new CDbCriteria (array());//里面是一堆条件,省略
    $pages = new CPagination ( ProductShowModel::model ()->count ( $dbCriteria ) );
    $pages->pageSize = $per_page;
    //下面不用applyLimit是因为瀑布流的原因
    $dbCriteria->limit = $per_page;
    $dbCriteria->offset = ($page-1) * $per_page;

    $products = null ;
    if(!$this->module->cacheDisabled) {
        $products = Yii::app()->cache->get('showStorage_'.$page);
    }
    if (null == $products){
        $products = ProductShowModel::model()->findAll($dbCriteria);
        if(!$this->module->cacheDisabled) {
            $dbDependency = new BBCDBCacheDependency('SELECT MAX(last_modified) FROM product LIMIT 1');
            $dbDependency->evaluateDependency();
            $cached = Yii::app()->cache->set('showStorage_'.$page, $products, BaobeiModule::CACHE_PRODUCT_EXPIRE, $dbDependency);
            if(!$cached) {
                Yii::log('Error while caching showStorage_'. $page, 'warning', 'system.web.ShowController');
            }
        
        }
    }
    $this->render ( 'showStorage', array ('products' => $products, 'pages' => $pages ) );
}

反正不报错,日志里面也没看出啥问题,但是缓存就是没加进去,我在 Yii::app()->cache->get('showStorage_'.$page);打印出来的是null

配置文件里面的cache配置是

'cache'=>array(
    'class'=>'system.caching.CFileCache',
    'directoryLevel'=>1,
    'cacheFileSuffix'=>'BBC',	
),

后来我又加了

'DBcache'=>array(
    'class'=>'system.caching.CDbCache',
),

然后用相对应的Yii::app()->DBcache,还是不行

有谁知道为啥的?我这个用法对吗?找不到相关的资料哎 求大大贴自己的代码

  • 回复于 2013-02-28 22:52 举报

    这是文件缓存,可以去相应的目录,看看缓存文件生成了吗。

  • 回复于 2013-03-01 10:01 举报

    嗯,昨天提问后一会就发现问题的所在了,忘了结贴了。

    用法没问题,问题是 $this->module->cacheDisabled ,我在module里面定义cacheDisabled设置的为false,就是可以用缓存,但是在配置文件里面设置的cacheDisabled是true,所以是我自己没开启缓存,所以....

  • 回复于 2013-03-05 15:08 举报

    发现问题及时解决~ 分享了大家会受益~

您需要登录后才可以回复。登录 | 立即注册