Yii框架常见缓存应用实例小结


Posted in PHP onSeptember 09, 2019

本文实例讲述了Yii框架常见缓存应用。分享给大家供大家参考,具体如下:

1 首先,你需要安装apc or memcache or redis 。 安装完后。 以redis 为例。 至于如何安装,多找度娘。

在配置文件中components 添加如下。

'cache'=>array(
  'class'=>'core.extensions.redis.Predis',
     'class'=>'core.extensions.redis.CRedisCache',
     'servers'=>array(
      array(
        'host'=>'192.168.1.xx',
        'port'=>6379,
       ),
      ),
    ),

2 最简单的例子。 set get.

Yii::app()->cache->set('id', date("Y-m-d H:i:s"), 5); //设置有效时间为5.
echo Yii::app()->cache->get("id")."<br/>";
sleep(2);
echo Yii::app()->cache->get("id"); //缓存有效期内 会输出数据
sleep(4);
echo Yii::app()->cache->get("id"); //缓存失效,输出为空

3 数据库查询缓存。

//3.1 最简单的数据库缓存。
$sql = 'select * from {{settings}}';
$cmd = Yii::app()->db->cache(10, null)->createCommand($sql);
$rows = $cmd->queryAll();
//3.2 加一个缓存依赖的概念。
$dp_sql = "SELECT MAX(id) FROM plat2_settings ";
$dependency = new CDbCacheDependency( $dp_sql );
$sql  = "SELECT * FROM `plat2_settings`";
$rows = Yii::app()->db->cache(1000, $dependency)->createCommand($sql)->queryAll();

上面的代码意思是查询对应的数据的时候,会先判断依赖查询 SELECT MAX(id) FROM plat2_settings 的结果数据是否有更新,

如果有更新,则重新查询数据,如依赖未更新则直接调缓存数据。 过1000 秒后,会重新查询。

4 片断缓存。

if($this->beginCache("xx"))
{
  echo "test cache ";
  $this->endCache();
}
//beginCache 会存在第二个参数,意思是选用指定的缓存器。如果需要使用不同的缓存时,可以定制。

5 页面缓存。

public function filters(){
  return array(
    array(
      'COutputCache+index+admin',
      'duration' => 120,
      'varyByParam'=>array('id'),
    ),
  );
}

使用控制器,直接对指定的action 进行缓存处理 。

还有varyBySession 可以选配。

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
用PHP制作静态网站的模板框架(一)
Oct 09 PHP
php操作excel文件 基于phpexcel
Jul 02 PHP
简单的移动设备检测PHP脚本代码
Feb 19 PHP
用穿越火线快速入门php面向对象
Feb 22 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
Jun 03 PHP
解析左右值无限分类的实现算法
Jun 20 PHP
PHP数组排序函数合集 以及它们之间的联系分析
Jun 27 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
Aug 31 PHP
PHP 数组基本操作小结(推荐)
Jun 13 PHP
thinkPHP内置字符串截取函数用法详解
Nov 15 PHP
PHP连接sftp并下载文件的方法教程
Aug 26 PHP
laravel 如何实现引入自己的函数或类库
Oct 15 PHP
Yii框架函数简单用法分析
Sep 09 #PHP
Yii框架的路由配置方法分析
Sep 09 #PHP
PHP实现时间日期友好显示实现代码
Sep 08 #PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
Sep 08 #PHP
Yii框架连表查询操作示例
Sep 06 #PHP
Laravel框架中缓存的使用方法分析
Sep 06 #PHP
Laravel框架实现的上传图片到七牛功能详解
Sep 06 #PHP
You might like
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
PHP 用数组降低程序的时间复杂度
2009/12/04 PHP
PHP 反向排序和随机排序代码
2010/06/30 PHP
js null,undefined,字符串小结
2010/08/21 Javascript
javascript-简单的计算器实现步骤分解(附图)
2013/05/30 Javascript
js动画效果制件让图片组成动画代码分享
2014/01/14 Javascript
JavaScript中变量声明有var和没var的区别示例介绍
2014/09/15 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
javascript中数组方法汇总
2015/07/07 Javascript
javascript构造函数以及原型对象的理解
2017/01/13 Javascript
详解ES6之async+await 同步/异步方案
2017/09/19 Javascript
集合Bootstrap自定义confirm提示效果
2017/09/19 Javascript
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
npm全局模块卸载及默认安装目录修改方法
2018/05/15 Javascript
微信小程序表单验证form提交错误提示效果
2020/06/19 Javascript
bootstrap table合并行数据并居中对齐效果
2018/10/17 Javascript
JavaScript中.min.js和.js文件的区别讲解
2019/02/13 Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
2019/07/29 Javascript
[01:02:05]LGD vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python首次安装后运行报错(0xc000007b)的解决方法
2016/10/18 Python
基于Python3 逗号代码 和 字符图网格(详谈)
2017/06/22 Python
python实现淘宝购物系统
2019/10/25 Python
Python检测端口IP字符串是否合法
2020/06/05 Python
美国Rue La La闪购网站:奢侈品、中高档品牌限时折扣
2016/10/19 全球购物
时尚孕妇装:Ingrid & Isabel
2019/05/08 全球购物
WSDL的操作类型主要有几种
2013/07/19 面试题
最热门的自我评价
2013/12/30 职场文书
成龙霸王洗发水广告词
2014/03/14 职场文书
说明书格式及范文
2014/05/07 职场文书
上海世博会志愿者口号
2014/06/17 职场文书
机电一体化专业求职信
2014/07/22 职场文书
解除劳动关系协议书范文
2014/09/11 职场文书
2015年师德表现自我评价
2015/03/05 职场文书
青年志愿者活动感想
2015/08/07 职场文书
2016年十一促销广告语
2016/01/28 职场文书
Springboot-cli 开发脚手架,权限认证,附demo演示
2022/04/28 Java/Android