Yii2数据库开启表结构缓存以及清除缓存
yii2 2018-04-28 15:05:53

 Yii2开启表结构缓存,因为当运用模型(model)时,AR的一些公共属性都会从DB中获取,这样会导致服务器负担一些额外的资源开销,实际上对于成品来说,服务器这些开始销是多余的,故应该阻止这种默认行为,把表结构进行缓存起来,提高效率.Yii2的缓存值得深入研究学习.

PHP Code复制内容到剪贴板
  1. //配置文件的方式  
  2. 'db'=>array(  
  3.     ...  
  4.     'enableSchemaCache' => true,  
  5.     'schemaCacheDuration' => 86400, // time in seconds  
  6.     ...  
  7. ),  
  8.    
  9. //区分环境--代码基类里面实现  
  10. $dsn = "mysql:host=" . $config['host'] . ":" . $config['port'] . ";dbname=" . $config['name'];  
  11. $connection = new Connection([  
  12.     'dsn' => $dsn,  
  13.     'username' => $config['user'],  
  14.     'password' => $config['password']  
  15. ]);  
  16. $connection->charset = "utf8mb4";  
  17. if(YII_ENV == 'prod'){              //正式环境才开启  
  18.     $connection->enableSchemaCache = true;  
  19. }  
  20. //........  
  21. return $connection;  

 

当开启了数据库的表结构缓存之后,需要改动或执行一些改变表结构的sql语句的时候,就会出现表结构被缓存了无法立即修复BUG或故障。这个时候就需要刷新或者清除数据库表结构的缓存信息。

PHP Code复制内容到剪贴板
  1. //方法一:清空表结构缓存的方法  
  2.    
  3. //flush all the schema cache  
  4. Yii::$app->db->schema->refresh();  
  5.    
  6. //clear the particular table schema cache  
  7. Yii::$app->db->schema->refreshTableSchema($tableName);  
  8.    
  9.    
  10. //方法二:清空所有的缓存--不仅仅是mysql表结构  
  11. Yii::$app->cache->flush();  
  12.    
  13.    
  14. //方法三:使用 yii命令行的方式commond清除缓存  
  15. cache/flush                Flushes given cache components.  
  16. cache/flush-all            Flushes all caches registered in the system.  
  17. cache/flush-schema         Clears DB schema cache for a given connection component.  
  18. cache/index (default)      Lists the caches that can be flushed.  
  19.    
  20. //执行   
  21. ./yii cache/flush-all  

 

 

 

 

 

本文来自于:http://www.yoyo88.cn/study/yii2/297.html

上一篇 数据表迁移
Powered by yoyo苏ICP备15045725号