当前位置:Gxlcms > 数据库问题 > Yii2.0数据库缓存依赖发布的使用理解

Yii2.0数据库缓存依赖发布的使用理解

时间:2021-07-01 10:21:17 帮助过:11人阅读

所有表model继承的基础BaseModel.php /** * @name 重写Yii2.0 beforeSave方法,达到自动更新缓存字段update_time的目的 * @author TestMe * @date 2016-12-06 * @see \yii\db\BaseActiveRecord::beforeSave($insert) */ public function beforeSave($insert) { // 定义需要设置依赖缓存的表 $cacheTable = [ SysConfig::tableName(), SysCodeDetail::tableName(), SysMenu::tableName(), ]; $cacheTable = array_flip($cacheTable); if (array_key_exists($this->tableName(), $cacheTable) && $this->hasAttribute(‘update_time‘)) { $this->setAttribute(‘update_time‘, time()); } return parent::beforeSave($insert); }

3、设置数据库缓存依赖:

    
  
  // 所有表model继承的基础BaseModel.php
  /**
     * @name 获取缓存数据库依赖
     * @author testMe
     * @date 2016-12-06
     * @param array $params 缓存依赖参数
     * @example
     *  1.请检查使用model对应表是否有update_time字段
     *  2.对应使用model请继承BaseModel
     *  3.调用BaseModel的getCacheDbDependency()方法
     */
    public static function getCacheDbDependency($params = [])
    {
        // 缓存依赖sql
        $dbDependencySql = self::find()->select(‘max(update_time)‘)
                                       ->where(‘deleted=0‘)
                                       ->createCommand()
                                       ->sql;
        
        // 设置缓存依赖
        $dbDependency = new DbDependency();
        $dbDependency->db = Yii::$app->components[‘db‘];
        $dbDependency->sql = $dbDependencySql;
        $dbDependency->params = $params;    

        return $dbDependency;
    }

4、发布缓存时使用:

        // 获取缓存依赖
        $dbDependency = SysCodeDetail::getCacheDbDependency();
        $cache = Yii::$app->cache;
        // 更新缓存文件
        $result = $cache->set(‘SysCodeEnum‘, SysCode::$_enum, 0, $dbDependency);
        if (!$result) {
            return false;
        }

 

Yii2.0数据库缓存依赖发布的使用理解

标签:生成   end   attr   name   and   png   component   turn   http   

人气教程排行