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脚本的10个技巧(2)
Oct 09 PHP
php 随机数的产生、页面跳转、件读写、文件重命名、switch语句
Aug 07 PHP
PHP 批量删除数据的方法分析
Oct 30 PHP
php 输出双引号&quot;与单引号'的方法
May 09 PHP
十个PHP高级应用技巧果断收藏
Sep 25 PHP
php对文件夹进行相关操作(遍历、计算大小)
Nov 04 PHP
PHP获取文件扩展名的方法实例总结
Jun 10 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
Jul 19 PHP
CI框架实现创建自定义类库的方法
Dec 25 PHP
PHP7 mongoDB扩展使用的方法分享
May 02 PHP
php面向对象基础详解【星际争霸游戏案例】
Jan 23 PHP
php实现记事本案例
Oct 20 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
《破坏领主》销量已超100万 未来将继续开发新内容
2020/03/08 其他游戏
服务器上配置PHP运行环境教程
2015/02/12 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
2015/04/15 PHP
动态加载iframe
2006/06/16 Javascript
让mayfish支持mysqli数据库驱动的实现方法
2010/05/22 Javascript
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
JQuery导航菜单选择特效
2016/04/11 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
探讨AngularJs中ui.route的简单应用
2016/11/16 Javascript
Bootstrap轮播图的使用和理解4
2016/12/14 Javascript
javaScript 逻辑运算符使用技巧整理
2017/05/03 Javascript
React-Native中禁用Navigator手势返回的示例代码
2017/09/09 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
Angular2的管道Pipe的使用方法
2017/11/07 Javascript
基于Koa2写个脚手架模拟接口服务的方法
2018/11/27 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
2019/10/11 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
python数字图像处理之骨架提取与分水岭算法
2018/04/27 Python
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
Python流程控制常用工具详解
2020/02/24 Python
为什么说python适合写爬虫
2020/06/11 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
英国No.1文具和办公用品在线:Euroffice
2016/09/21 全球购物
新加坡网上花店:FlowerAdvisor新加坡
2018/10/05 全球购物
医院护理人员的自我评价分享
2013/10/04 职场文书
初任培训自我鉴定
2013/10/07 职场文书
检察官就职演讲稿
2014/01/13 职场文书
国际贸易求职信
2014/07/05 职场文书
2014幼儿园大班工作总结
2014/11/10 职场文书
先进个人事迹材料
2014/12/29 职场文书
失职检讨书大全
2015/01/26 职场文书
几款流行的HTML5 UI框架比较(小结)
2021/04/08 HTML / CSS
python如何正确使用yield
2021/05/21 Python
Nginx限流和黑名单配置
2022/05/20 Servers