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 相关文章推荐
PHP5 操作MySQL数据库基础代码
Sep 29 PHP
php 缩略图实现函数代码
Jun 23 PHP
php 使用GD库为页面增加水印示例代码
Mar 24 PHP
PHP生成自适应大小的缩略图类及使用方法分享
May 06 PHP
PHP通过API获取手机号码归属地
May 28 PHP
Apache服务器下防止图片盗链的办法
Jul 06 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
Feb 15 PHP
PHP中__autoload和Smarty冲突的简单解决方法
Apr 08 PHP
Yii2实现增删改查后留在当前页的方法详解
Jan 13 PHP
PHP面向对象程序设计重载(overloading)操作详解
Jun 13 PHP
TP5框架实现的数据库备份功能示例
Apr 05 PHP
PHP后门隐藏的一些技巧总结
Nov 04 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
php中的实现trim函数代码
2007/03/19 PHP
php读取30天之内的根据算法排序的代码
2008/04/06 PHP
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
PHP实现算式验证码和汉字验证码实例
2015/03/09 PHP
解决laravel查询构造器中的别名问题
2019/10/17 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
JavaScript实现网页截图功能
2014/10/16 Javascript
javascript解析json实例详解
2014/11/05 Javascript
jQuery关键词说明插件cluetip使用指南
2015/04/21 Javascript
使用coffeescript编写node.js项目的方法汇总
2015/08/05 Javascript
js实现简单的联动菜单效果
2015/08/19 Javascript
非常实用的12个jquery代码片段
2015/11/02 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
Bootstrap页面标题Page Header的实现方法
2017/03/22 Javascript
Zepto实现密码的隐藏/显示
2017/04/07 Javascript
jQuery简介_动力节点Java学院整理
2017/07/04 jQuery
浅谈Node异步编程的机制
2017/10/18 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
2018/09/16 Javascript
基于 jQuery 实现键盘事件监听控件
2019/04/04 jQuery
vue中音频wavesurfer.js的使用方法
2020/02/20 Vue.js
Vue中通过属性绑定为元素绑定style行内样式的实例代码
2020/04/30 Javascript
你不知道的 TypeScript 高级类型(小结)
2020/08/28 Javascript
[03:55]TI9战队采访——TNC Predator
2019/08/22 DOTA
Python GAE、Django导出Excel的方法
2008/11/24 Python
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
Python简单进程锁代码实例
2015/04/27 Python
在Python中给Nan值更改为0的方法
2018/10/30 Python
python使用response.read()接收json数据的实例
2018/12/19 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
使用python模拟命令行终端的示例
2019/08/13 Python
详解WebSocket跨域问题解决
2018/08/06 HTML / CSS
英国行业制服供应商:Alexandra
2019/09/14 全球购物
勤俭节约演讲稿
2014/05/08 职场文书
党支部评议意见
2015/06/02 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书