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的网址
Nov 25 PHP
修改了一个很不错的php验证码(支持中文)
Feb 14 PHP
php面向对象全攻略 (九)访问类型
Sep 30 PHP
php简单对象与数组的转换函数代码(php多层数组和对象的转换)
May 18 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
Aug 07 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
Jun 13 PHP
教你如何开启shopnc b2b2c 伪静态
Oct 21 PHP
smarty模板引擎之内建函数用法
Mar 30 PHP
Symfony实现行为和模板中取得request参数的方法
Mar 17 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
Jun 13 PHP
PHP面向对象程序设计组合模式与装饰模式详解
Dec 02 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
Feb 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
php随机取mysql记录方法小结
2014/12/27 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
2015/08/08 PHP
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
2019/08/06 PHP
“不能执行已释放的Script代码”错误的原因及解决办法
2007/09/09 Javascript
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
js+jquery常用知识点汇总
2015/03/03 Javascript
Backbone.js的Hello World程序实例
2015/06/19 Javascript
js拼接html字符串的注意事项
2016/10/13 Javascript
jquery滚动条插件(可以自定义)
2016/12/11 Javascript
微信小程序自定义prompt组件步骤详解
2018/06/12 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
2018/08/08 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
javascript头像上传代码实例
2019/09/28 Javascript
JS数组的常用10种方法详解
2020/05/08 Javascript
[01:27]2014DOTA2展望TI 剑指西雅图IG战队专访
2014/06/30 DOTA
Python中的高级数据结构详解
2015/03/27 Python
用Python实现一个简单的能够发送带附件的邮件程序的教程
2015/04/08 Python
快速入门python学习笔记
2017/12/06 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
2018/01/24 Python
Python栈的实现方法示例【列表、单链表】
2020/02/22 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
英国领先的男士服装和时尚零售商:Burton
2017/01/09 全球购物
Brother加拿大官网:打印机、贴标机、缝纫机
2019/10/09 全球购物
品学兼优的大学生自我评价
2013/09/20 职场文书
药剂学专业应届生自荐信
2013/09/29 职场文书
企业职业病防治方案
2014/05/29 职场文书
教师批评与自我批评(群众路线)
2014/10/15 职场文书
区域销售经理岗位职责
2015/04/02 职场文书
Sql-Server数据库单表查询 4.3实验课
2021/04/05 SQL Server
Python爬虫:从m3u8文件里提取小视频的正确操作
2021/05/14 Python
Requests什么的通通爬不了的Python超强反爬虫方案!
2021/05/20 Python
CSS浮动引起的高度塌陷问题
2022/08/05 HTML / CSS