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仿ZOL分页类代码
Oct 02 PHP
php学习之 认清变量的作用范围
Jan 26 PHP
用PHP为SHOPEX增加日志功能代码
Jul 02 PHP
解析php获取字符串的编码格式的方法(函数)
Jun 21 PHP
php删除数组元素示例分享
Feb 17 PHP
PHP整数取余返回负数的相关解决方法
May 15 PHP
php实现使用正则将文本中的网址转换成链接标签
Dec 03 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
Mar 21 PHP
PHP书写格式详解(必看)
May 23 PHP
Laravel框架用户登陆身份验证实现方法详解
Sep 14 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
Jan 17 PHP
laravel 关联关系遍历数组的例子
Oct 10 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获取数组中某元素的位置及array_keys函数应用
2013/01/29 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
jQuery教程 $()包装函数来实现数组元素分页效果
2013/08/13 Javascript
JQuery记住用户名密码实现下次自动登录功能
2015/04/27 Javascript
AngularJS 中的事件详解
2016/07/28 Javascript
JavaScript制作简单分页插件
2016/09/11 Javascript
js利用clipboardData实现截屏粘贴功能
2016/10/12 Javascript
原生JS实现垂直手风琴效果
2017/02/19 Javascript
vue获取DOM元素并设置属性的两种实现方法
2017/09/30 Javascript
防止页面url缓存中ajax中post请求的处理方法
2017/10/10 Javascript
vue实现pdf文档在线预览功能
2019/11/26 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
2020/04/23 Javascript
基于Python代码编辑器的选用(详解)
2017/09/13 Python
教你用一行Python代码实现并行任务(附代码)
2018/02/02 Python
python搜索包的路径的实现方法
2019/07/19 Python
Python time库基本使用方法分析
2019/12/13 Python
python在不同条件下的输入与输出
2020/02/13 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
Python Selenium安装及环境配置的实现
2020/03/17 Python
Django 解决新建表删除后无法重新创建等问题
2020/05/21 Python
Django如何批量创建Model
2020/09/01 Python
CK美国官网:Calvin Klein
2016/08/26 全球购物
英国知名奢侈品包包品牌:Milli Millu
2016/12/22 全球购物
英国一家集合了众多有才华设计师品牌的奢侈店:Wolf & Badger
2018/04/18 全球购物
如何获取某个日期是当月的最后一天
2013/12/05 面试题
内容编辑个人求职信
2013/12/10 职场文书
在校学生职业规划范文
2014/01/08 职场文书
大堂副理的岗位职责范文
2014/02/17 职场文书
cf战队收人广告词
2014/03/14 职场文书
公司廉洁自律承诺书
2014/03/27 职场文书
节能减耗标语
2014/06/21 职场文书
基层党员对照检查材料
2014/08/25 职场文书
信用卡催款律师函
2015/05/27 职场文书
Windows11性能真的上涨35%? 桌面酷睿i9实测结果公开
2021/11/21 数码科技
css布局巧妙技巧之css三角示例的运用
2022/03/16 HTML / CSS
JS开发前端团队展示控制器来为成员引流
2022/08/14 Javascript