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 echo()和print()、require()和include()函数区别说明
Mar 27 PHP
PHP数据类型之布尔型的介绍
Apr 28 PHP
PHP不用第三变量交换2个变量的值的解决方法
Jun 02 PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
Jun 17 PHP
php获取图片信息的方法详解
Dec 10 PHP
YII CLinkPager分页类扩展增加显示共多少页
Jan 29 PHP
PHP匿名函数和use子句用法实例
Mar 16 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
Sep 21 PHP
THINKPHP截取中文字符串函数实例代码
Mar 20 PHP
thinkphp5 migrate数据库迁移工具
Feb 20 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
Apr 27 PHP
Laravel模糊查询区分大小写的实例
Sep 29 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中json_encode中文编码问题分析
2011/09/13 PHP
PHP判断图片格式的七种方法小结
2013/06/03 PHP
分享最受欢迎的5款PHP框架
2014/11/27 PHP
thinkphp的静态缓存用法分析
2014/11/29 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
php日志函数error_log用法实例分析
2019/09/23 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
2019/10/16 PHP
Laravel登录失败次数限制的实现方法
2020/08/26 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
上传的js验证(图片/文件的扩展名)
2013/04/25 Javascript
解决js数据包含加号+通过ajax传到后台时出现连接错误
2013/08/01 Javascript
DOM基础教程之事件对象
2015/01/20 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
2016/08/24 Javascript
JS实现间歇滚动的运动效果实例
2016/12/22 Javascript
基于jQuery的左滑出现删除按钮的示例
2017/08/29 jQuery
Vue组件之极简的地址选择器的实现
2018/05/31 Javascript
Javascript作用域和作用域链原理解析
2020/03/03 Javascript
Python的设计模式编程入门指南
2015/04/02 Python
python画出三角形外接圆和内切圆的方法
2018/01/25 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
2018/03/20 Python
Python3多线程操作简单示例
2018/05/22 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
2018/11/18 Python
Python中的类与类型示例详解
2019/07/10 Python
Python lambda表达式filter、map、reduce函数用法解析
2019/09/11 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
10个最常见的HTML5面试题 附答案
2016/06/06 HTML / CSS
AmazeUI的下载配置与Helloworld的实现
2020/08/19 HTML / CSS
Araks官网:纽约内衣品牌
2020/10/15 全球购物
工商管理专业实习生自我鉴定
2013/09/29 职场文书
语文教学随笔感言
2014/02/18 职场文书
会计工作决心书
2014/03/11 职场文书
三八妇女节慰问信
2015/02/14 职场文书
2015年节能降耗工作总结
2015/05/22 职场文书