>백엔드 개발 >PHP 튜토리얼 >ThinkPHP 캐시 빠른 캐시 및 동적 캐시

ThinkPHP 캐시 빠른 캐시 및 동적 캐시

不言
不言원래의
2018-06-08 17:09:152031검색

thinkPHP의 F 메소드는 단순 데이터 유형을 캐시하는 데만 사용할 수 있으며 유효 기간 및 캐시된 객체를 지원하지 않습니다. S() 캐시 방식은 동적 캐시 방식이라고도 알려진 유효 기간을 지원합니다. 이 기사는 thinkphp 캐싱 방법에 대한 편집자의 일일 편집입니다. thinkphp 캐싱 방법에 관심이 있는 친구들은 함께 배워야 합니다. 시스템의 기본 캐싱 방법은 프로젝트 구성 파일에서 다른 캐싱 방법을 정의할 수 있습니다. 기본 캐싱 방식을 Xcache로 수정하세요. (물론 환경이 Xcache를 지원해야 합니다.)

캐시된 데이터가 너무 많아 파일 모드 캐싱 아래 캐시 디렉터리에 파일이 너무 많아지는 문제에 대해 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,//设置子目录的层次

액션 파일:

 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 파일 내용은 다음과 같습니다.

<?php
return &#39;asdfasdfasdaaaaaaaaaaaaaaaaaaaaaa&#39;;
?>

다음 코드는 ThinkPHP 캐싱 방식 S()thinkPHP의 F 방식은 단순 데이터 유형만 캐싱할 수 있으며 캐싱 방식은 캐시하지 않습니다. 유효 기간 및 캐시 개체를 지원합니다. S() 캐시 방식은 동적 캐시 방식이라고도 알려진 유효 기간을 지원합니다.

코드는 다음과 같습니다.

// 使用data标识缓存$Data数据
S(&#39;data&#39;,$Data);  //前面的是缓存标示,后面的是缓存的数据

코드는 다음과 같습니다.

// 缓存$Data数据3600秒
S(&#39;data&#39;,$Data,3600);

코드는 다음과 같습니다. :

// 删除缓存数据
S(&#39;data&#39;,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[&#39;user_id&#39;])->find();
  $cache[$key]["nickname"]=$userlist[&#39;nickname&#39;];
  }
  S($cachename,$cache,3600); //设置缓存的生存时间 
  }
  S($cachename,NULL); //删除缓存

위 글 전체 내용입니다. 모든 분들의 학습에 도움이 되었으면 좋겠습니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!

관련 권장사항:

ThinkPHP의 정적 캐싱 및 동적 캐싱 구현 분석


위 내용은 ThinkPHP 캐시 빠른 캐시 및 동적 캐시의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.