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 相关文章推荐
基于Zend的Captcha机制的应用
May 02 PHP
PHP代码保护--Zend Guard的使用详解
Jun 03 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
Jun 24 PHP
PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例
Oct 22 PHP
PHP中round()函数对浮点数进行四舍五入的方法
Nov 19 PHP
PHP往XML中添加节点的方法
Mar 12 PHP
PHP下载远程文件到本地存储的方法
Mar 24 PHP
PHP获取远程图片并保存到本地的方法
May 12 PHP
php实现有趣的人品测试程序实例
Jun 08 PHP
php自动加载方式集合
Apr 04 PHP
Laravel框架路由和控制器的绑定操作方法
Jun 12 PHP
Laravel相关的一些故障解决
Aug 19 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 UBB 解析实现代码
2011/11/27 PHP
关于使用coreseek并为其做分页的介绍
2013/06/21 PHP
php调用MySQL存储过程的方法集合(推荐)
2013/07/03 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
2014/11/05 PHP
php实现模拟post请求用法实例
2015/07/11 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
2017/08/10 PHP
PHP时间相关常用函数用法示例
2020/06/03 PHP
项目实践之javascript技巧
2007/12/06 Javascript
JavaScript获取FCK编辑器信息的具体方法
2013/07/12 Javascript
jquery获取css中的选择器(实例讲解)
2013/12/02 Javascript
Javascript基础教程之while语句
2015/01/18 Javascript
jquery调取json数据实现省市级联的方法
2015/01/29 Javascript
js实现屏幕自适应局部代码分享
2015/01/30 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
vue使用Axios做ajax请求详解
2017/06/07 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
如何通过Proxy实现JSBridge模块化封装
2020/10/22 Javascript
菜鸟使用python实现正则检测密码合法性
2016/01/05 Python
玩转python爬虫之URLError异常处理
2016/02/17 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
2017/08/30 Python
Python实现曲线点抽稀算法的示例
2017/10/12 Python
Python日期时间对象转换为字符串的实例
2018/06/22 Python
Python异常处理操作实例详解
2018/08/28 Python
Jupyter Notebook 实现正常显示中文和负号
2020/04/24 Python
python 调用API接口 获取和解析 Json数据
2020/09/28 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
css3 中实现炫酷的loading效果
2019/04/26 HTML / CSS
AmazeUI中模态框的实现
2020/08/19 HTML / CSS
澳大利亚排名第一的露营和户外设备在线零售商:Outbax
2020/05/06 全球购物
音乐系毕业生自荐信
2013/10/27 职场文书
党员廉洁自律个人总结
2015/02/13 职场文书
教师节获奖感言
2015/07/31 职场文书
学校中层领导培训心得体会
2016/01/11 职场文书
MySQL查询学习之基础查询操作
2021/05/08 MySQL
如何解决flex文本溢出问题小结
2022/07/15 HTML / CSS