ThinkPHP キャッシュの高速キャッシュと動的キャッシュ

不言
リリース: 2023-03-30 22:00:01
オリジナル
2020 人が閲覧しました

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,//设置子目录的层次
ログイン後にコピー

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 のファイル 内容は次のとおりです。

<?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 中国語 Web サイトをご覧ください。

関連する推奨事項:

ThinkPHP の静的キャッシュと動的キャッシュの実装に関する分析

以上がThinkPHP キャッシュの高速キャッシュと動的キャッシュの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート