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 19 PHP
PHP入门速成教程
Mar 19 PHP
php5.3 废弃函数小结
May 16 PHP
写出高质量的PHP程序
Feb 04 PHP
浅析php中jsonp的跨域实例
Jun 21 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
Dec 19 PHP
php操作access数据库的方法详解
Feb 22 PHP
利用PHP实现一个简单的用户登记表示例
Apr 25 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
Nov 14 PHP
laravel 框架配置404等异常页面
Jan 07 PHP
laravel5.1框架model类查询的实现方法
Oct 08 PHP
Yii框架小部件(Widgets)用法实例详解
May 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&amp;&amp;mysql)三
2006/10/09 PHP
用PHP实现多服务器共享SESSION数据的方法
2007/03/16 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
ThinkPHP模版中导入CSS和JS文件的方法
2014/11/29 PHP
apache和PHP如何整合在一起
2015/10/12 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
php使用自带dom扩展进行元素匹配的原理解析
2020/05/29 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
一段批量给页面上的控件赋值js
2010/06/19 Javascript
浅析js中的浮点型运算问题
2014/01/06 Javascript
动态加载js、css等文件跨iframe实现
2014/02/24 Javascript
js 与 php 通过json数据进行通讯示例
2014/03/26 Javascript
JavaScript 里的类数组对象
2015/04/08 Javascript
JavaSacript中charCodeAt()方法的使用详解
2015/06/05 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
ES6的新特性概览
2016/03/10 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
2016/10/10 Javascript
使用JavaScript解决网页图片拉伸问题(推荐)
2016/11/25 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
JavaScript实现无限级递归树的示例代码
2019/03/29 Javascript
关于layui时间回显问题的解决方法
2019/09/24 Javascript
vue组件实现移动端九宫格转盘抽奖
2020/10/16 Javascript
python实现音乐下载器
2018/04/15 Python
Python使用 Beanstalkd 做异步任务处理的方法
2018/04/24 Python
keras多显卡训练方式
2020/06/10 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
pycharm进入时每次都是insert模式的解决方式
2021/02/05 Python
Desigual德国官网:在线购买原创服装
2018/03/27 全球购物
同程旅游英文网站:LY.com
2018/11/13 全球购物
《夕阳真美》教学反思
2014/04/27 职场文书
药剂专业个人求职信范文
2014/04/29 职场文书
校园主题婚礼活动策划方案
2014/09/15 职场文书
酒店前台辞职书
2015/02/26 职场文书
烛光里的微笑观后感
2015/06/17 职场文书
安全学习心得体会范文
2016/01/18 职场文书
详解CSS伪元素的妙用单标签之美
2021/05/25 HTML / CSS