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+MYSQL开发工具及资源收藏
Jan 02 PHP
一个简单php扩展介绍与开发教程
Aug 19 PHP
PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
Jun 23 PHP
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
Aug 04 PHP
php实现设计模式中的单例模式详解
Oct 11 PHP
php启用sphinx全文搜索的实现方法
Dec 24 PHP
PHP实现的简易版图片相似度比较
Jan 07 PHP
php类常量用法实例分析
Jul 09 PHP
PHP中多线程的两个实现方法
Oct 14 PHP
php自定义时间转换函数示例
Dec 07 PHP
微信公众号OAuth2.0网页授权问题浅析
Jan 21 PHP
浅谈PHP无限极分类原理
Mar 14 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
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
2011/04/23 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
浅谈COOKIE和SESSION区别
2015/07/19 PHP
PHP合并discuz用户脚本的方法
2015/08/04 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
js小技巧--自动隐藏红叉叉
2007/08/13 Javascript
javascript 自动转到命名锚记
2009/01/10 Javascript
javascript 设计模式之单体模式 面向对象学习基础
2010/04/18 Javascript
使用Js让Html中特殊字符不被转义
2013/11/05 Javascript
JS使用eval解析JSON的注意事项分析
2015/11/14 Javascript
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
2016/01/18 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
2016/05/21 Javascript
Html中 IFrame的用法及注意点
2016/12/22 Javascript
vue 请求后台数据的实例代码
2017/06/22 Javascript
在Vue项目中使用snapshot测试的具体使用
2019/04/16 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
js实现GIF动图分解成多帧图片上传
2019/10/24 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
2020/03/23 Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
2020/08/31 Javascript
简单谈谈Python中的json与pickle
2017/07/19 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
2018/04/02 Python
用Python3创建httpServer的简单方法
2018/06/04 Python
python抓取京东小米8手机配置信息
2018/11/13 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
2019/11/06 Python
django 实现手动存储文件到model的FileField
2020/03/30 Python
python 3.8.3 安装配置图文教程
2020/05/21 Python
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
初中政治教学反思
2014/01/17 职场文书
会计电算化毕业生自荐信
2014/03/03 职场文书
单位消防安全责任书
2014/07/23 职场文书
医院护士见习期自我鉴定
2014/09/15 职场文书
十八大观后感
2015/06/12 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
Django给表单添加honeypot验证增加安全性
2021/05/06 Python
《吸血鬼:避世 血猎》官宣4.27发售 系列首款大逃杀
2022/04/03 其他游戏
python内置模块之上下文管理contextlib
2022/06/14 Python