加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)

发布时间:2020-12-13 02:54:06 所属栏目:PHP教程 来源:网络整理
导读:《:浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)》要点: 本文介绍了:浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理),希望对您有用。如果有疑问,可以联系我们。 PHP学习 系统默认的缓存方式是采用File方式缓存,我们可

《:浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)》要点:
本文介绍了:浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理),希望对您有用。如果有疑问,可以联系我们。

PHP学习系统默认的缓存方式是采用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

//动态缓存,缓存文件存在于RuntimeTemp
'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方法)和动态缓存(S方法)(日常整理)

再次刷新后如下图:

:浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)

下面给大家单独介绍ThinkPHP 中F 办法的快速缓存

使用文件方式的缓存就能够满足要求,所以系统还提供了一个专门用于文件方式的快速缓存办法F办法

$path="../Public/Runtime/";
$str="asdfasdfasdaaaaaaaaaaaaaaaaaaaaaa";
F("str/andy",$str,$path);

这样就把 $str 字符串这个内容放在了 ../Public/Runtime/str/andy.php? 的文件中了

andy.php 的文件内容如下:

<?php
return 'asdfasdfasdaaaaaaaaaaaaaaaaaaaaaa';
?>

下面一段代码是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缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读