扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这期内容当中小编将会给大家带来有关利用ThinkPHP怎么实现一个快速缓存与动态缓存,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
成都创新互联是一家集网站建设,普洱企业网站建设,普洱品牌网站建设,网站定制,普洱网站建设报价,网络营销,网络优化,普洱网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。系统默认的缓存方式是采用File方式缓存,我们可以在项目配置文件里面定义其他的缓存方式,例如,修改默认的缓存方式为Xcache(当然,你的环境需要支持Xcache)
对于File方式缓存下的缓存目录下面因为缓存数据过多而导致存在大量的文件问题,ThinkPHP也给出了解决方案,可以启用哈希子目录缓存的方式。
'DATA_CACHE_SUBDIR'=>true
还可以设置哈希目录的层次,例如
'DATA_PATH_LEVEL'=>2
就可以根据缓存标识的哈希自动创建多层子目录来缓存。
S方法支持缓存有效期,在很多情况下,可能我们并不需要有效期的概念,或者使用文件方式的缓存就能够满足要求,所以系统还提供了一个专门用于文件方式的快速缓存方法F方法。F方法只能用于缓存简单数据类型,不支持有效期和缓存对象,使用如下:
//快速缓存Data数据,默认保存在DATA_PATH目录下面
F('data',$data);
//快速缓存Data数据,保存到指定的目录
F('data',$data,TEMP_PATH);
F('user/data',$data);
//删除缓存数据
F('data',null);
//获取缓存数据
$data=F('data');
配置文件config.php
//动态缓存,缓存文件存在于\Runtime\Temp
'DATA_CACHE_TYPE'=>'file',
'DATA_CACHE_TIME'=>'3600',
//'DATA_CACHE_SUBDIR'=>true,//开启子目录
//'DATA_CACHE_LEVEL'=>3,//设置子目录的层次
Action文件:
function view(){ //缓存 //$cache=Cache::getInstance('缓存方式','缓存参数'); //$cache=Cache::getInstance('Xcache',array('expire'=>60)); //$cache->set('名字','值');或者$cache->name='值'; //$value=$cache->get('名字');或者$value=$cache->name; //$cache->rm('名字');或者unset($cache->name); //S('名字','数据','3600','类型')缓存快捷方法 $user=M('haodetong'); $value=S('list'); if(empty($value)){ $list=$user->select(); S('list',$list,3600); echo '这个是直接从数据库中读取的文件'; dump($list); }else{ echo '这个是缓存文件'; dump($value); } }
下面给大家单独介绍ThinkPHP 中F 方法的快速缓存
使用文件方式的缓存就能够满足要求,所以系统还提供了一个专门用于文件方式的快速缓存方法F方法
$path="../Public/Runtime/";
$str="asdfasdfasdaaaaaaaaaaaaaaaaaaaaaa";
F("str/andy",$str,$path);
这样就把 $str 字符串这个内容放在了 ../Public/Runtime/str/andy.php 的文件中了
andy.php 的文件内容如下:
下面一段代码是ThinkPHP缓存方法S()概述
thinkPHP的F方法只能用于缓存简单数据类型,不支持有效期和缓存对象。S()缓存方法支持有效期,又称动态缓存方法,使用示例如下:
// 使用data标识缓存$Data数据S('data',$Data); //前面的是缓存标示,后面的是缓存的数据 代码如下: // 缓存$Data数据3600秒S('data',$Data,3600);
代码如下:
// 删除缓存数据 S('data',NULL); //第一个参数时缓存的标识名
代码如下:
$cache=S($cachename);//设置缓存标示 // 判断是否有这个查询缓存 if(!$cache){ //$cache 中是缓存的标示(每个查询都对应一个缓存 即 不同的查询有不同的缓存) $cache=$video->where($map)->order($order)->limit($limit)->select(); foreach($cache as $key=>$value){ $userlist=$user->where("id=".$value['user_id'])->find(); $cache[$key]["nickname"]=$userlist['nickname']; } S($cachename,$cache,3600); //设置缓存的生存时间 } S($cachename,NULL); //删除缓存
上述就是小编为大家分享的利用ThinkPHP怎么实现一个快速缓存与动态缓存了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流