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过滤危险html代码的函数
Jul 22 PHP
PHP memcache扩展的三种安装方法
Apr 26 PHP
PHP下escape解码函数的实现方法
Aug 08 PHP
url decode problem 解决方法
Dec 26 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
Sep 29 PHP
PHP技术开发微信公众平台
Jul 22 PHP
php生成验证码函数
Oct 20 PHP
深入解析PHP的Yii框架中的缓存功能
Mar 29 PHP
PHP构造函数与析构函数用法示例
Sep 28 PHP
thinkPHP5.0框架环境变量配置方法
Mar 17 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
Nov 17 PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
Apr 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学习笔记之 函数声明
2011/06/09 PHP
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
2011/07/01 PHP
php 调试利器debug_print_backtrace()
2012/07/23 PHP
php实现mysql封装类示例
2014/05/07 PHP
PHP实现获取图片颜色值的方法
2014/07/11 PHP
php实现二进制和文本相互转换的方法
2015/04/18 PHP
PHP中foreach()用法汇总
2015/07/02 PHP
ThinkPHP路由机制简介
2016/03/23 PHP
PHP中子类重载父类的方法【parent::方法名】
2016/05/06 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
使Ext的Template可以解析二层的json数据的方法
2007/12/22 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
2015/10/31 Javascript
js和jquery分别验证单选框、复选框、下拉框
2015/12/17 Javascript
vue将时间戳转换成自定义时间格式的方法
2018/03/02 Javascript
Postman参数化实现过程及原理解析
2020/08/13 Javascript
[40:05]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python中利用xml.dom模块解析xml的方法教程
2017/05/24 Python
python树莓派红外反射传感器
2019/01/21 Python
python字符串切割:str.split()与re.split()的对比分析
2019/07/16 Python
python实现在一个画布上画多个子图
2020/01/19 Python
Python计算矩阵的和积的实例详解
2020/09/10 Python
pycharm中选中一个单词替换所有重复单词的实现方法
2020/11/17 Python
Python getsizeof()和getsize()区分详解
2020/11/20 Python
如果NULL和0作为空指针常数是等价的,那我到底该用哪一个
2014/09/16 面试题
会议接待欢迎词
2014/01/12 职场文书
校园歌手大赛策划书
2014/01/17 职场文书
《月亮湾》教学反思
2014/04/14 职场文书
销售个人求职信范文
2014/04/28 职场文书
公司节能减排倡议书
2014/05/14 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
教师求职信怎么写
2015/03/20 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
关于幸福的感言
2015/08/03 职场文书