YII 数据库缓存
2016-03-02 17:41
656 查看
1.config/main.php 配置
'components'=>array(
'cache'=>array(
'class'=>'system.caching.CFileCache',
'directoryLevel' => 2,
),
'db'=>array(
'class' => 'CDbConnection',
'connectionString' => 'mysql:host=localhost;dbname=test',
'username' => 'func',
'password' => 'passwd',
'emulatePrepare' => true,
'charset' => 'utf8',
'schemaCachingDuration'=>0,//缓存时间
'schemaCacheID' => 'cache', //使用的缓存组件
'queryCachingDuration'=>0,//缓存时间
'queryCachingDependency' => null, //缓存依赖
'queryCacheID' => 'cache', //使用的缓存组件
'queryCachingCount'=>0,//第一次使用这条Sql语句后,同样的多少条sql语句需要缓存
'schemaCachingExclude' => array(), //不需要缓存的表名数组
'tablePrefix' =>'tbl_',
'enableProfiling'=>true, //可用于SQL调试
),
)
例子:
public function actionSql(){
$sql="SELECT * FROM tbl_task";
$dependency=new CDbCacheDependency($sql);
$rows=Yii::app()->db->cache(1000,$dependency)->createCommand($sql)->queryAll();
//$rows=Task::model()->cache(1000,$dependency)->findAll();
var_dump($rows);
}
如果缓存包含了SQL语句中的入口索引
如果入口还没过期(少于保存后的1000秒)
如果依赖关系没有变化(update_time的最大值是跟查询结果保存到缓存时一致)
如果以上3个条件都满足了,缓存的结果就会直接返回给请求。否则,SQL语句就会被传递到数据库系统去执行,得到的结果会保存到缓存,返回给请求
'components'=>array(
'cache'=>array(
'class'=>'system.caching.CFileCache',
'directoryLevel' => 2,
),
'db'=>array(
'class' => 'CDbConnection',
'connectionString' => 'mysql:host=localhost;dbname=test',
'username' => 'func',
'password' => 'passwd',
'emulatePrepare' => true,
'charset' => 'utf8',
'schemaCachingDuration'=>0,//缓存时间
'schemaCacheID' => 'cache', //使用的缓存组件
'queryCachingDuration'=>0,//缓存时间
'queryCachingDependency' => null, //缓存依赖
'queryCacheID' => 'cache', //使用的缓存组件
'queryCachingCount'=>0,//第一次使用这条Sql语句后,同样的多少条sql语句需要缓存
'schemaCachingExclude' => array(), //不需要缓存的表名数组
'tablePrefix' =>'tbl_',
'enableProfiling'=>true, //可用于SQL调试
),
)
例子:
public function actionSql(){
$sql="SELECT * FROM tbl_task";
$dependency=new CDbCacheDependency($sql);
$rows=Yii::app()->db->cache(1000,$dependency)->createCommand($sql)->queryAll();
//$rows=Task::model()->cache(1000,$dependency)->findAll();
var_dump($rows);
}
如果缓存包含了SQL语句中的入口索引
如果入口还没过期(少于保存后的1000秒)
如果依赖关系没有变化(update_time的最大值是跟查询结果保存到缓存时一致)
如果以上3个条件都满足了,缓存的结果就会直接返回给请求。否则,SQL语句就会被传递到数据库系统去执行,得到的结果会保存到缓存,返回给请求
相关文章推荐
- 构建自己的PHP框架--实现Model类(3)
- WindowManager.LayoutParams 详解
- 如何在一台windows的服务器里安装配置PHP+MYSQL环境
- PHP实现各种经典算法
- php启用sockets扩展解决phpmailer发送邮件慢
- FFmpegPHP的安装使用详解
- zend studio 的主题安装,插件安装、卸载和更新
- ffmpeg的php扩展 在64位系统下的安装
- PHP SSH2 不支持 IdentityFile
- php计算时间差/两个时间日期相隔的天数,时,分,秒
- 6410H264编码rtp串流
- PHP中“简单工厂模式”实例讲解
- PHP获取今天开始和结束的时间戳
- php经典算法
- PHP无限极分类
- php中利用gd图片验证码生成和保存
- php中的curl使用入门教程和常见用法实例
- PHP查看文件修改时间
- php设计模式 数据对象映射模式
- oRTP源码分析