Heim  >  Artikel  >  Backend-Entwicklung  >  ThinkPHP-Cache, schneller Cache und dynamischer Cache

ThinkPHP-Cache, schneller Cache und dynamischer Cache

不言
不言Original
2018-06-08 17:09:152007Durchsuche

Die F-Methode von thinkPHP kann nur zum Zwischenspeichern einfacher Datentypen verwendet werden und unterstützt keine Gültigkeitszeiträume und zwischengespeicherten Objekte. Die S()-Cache-Methode unterstützt den Gültigkeitszeitraum, auch bekannt als dynamische Cache-Methode. Dieser Artikel ist die tägliche Zusammenstellung der Thinkphp-Caching-Methoden. Freunde, die sich für Thinkphp-Caching-Methoden interessieren, sollten gemeinsam lernen.

Die Standard-Caching-Methode des Systems ist Datei-Caching. Wir können andere Caches in der Projektkonfigurationsdatei definieren . Methode, ändern Sie beispielsweise die Standard-Caching-Methode in Xcache (natürlich muss Ihre Umgebung Xcache unterstützen)

Für das Problem einer großen Anzahl von Dateien im Cache-Verzeichnis unter Dateimodus-Caching Viele zwischengespeicherte Daten, ThinkPHP bietet auch eine Lösung, um das Zwischenspeichern von Hash-Unterverzeichnissen zu ermöglichen.

    'DATA_CACHE_SUBDIR'=>true

Sie können auch die Ebene des Hash-Verzeichnisses festlegen. Beispielsweise kann

    'DATA_PATH_LEVEL'=>2

automatisch mehrstufige Unterverzeichnisse für das Caching erstellen, basierend auf dem Hash der Cache-ID.

Die S-Methode unterstützt den Cache-Gültigkeitszeitraum. In vielen Fällen benötigen wir das Konzept des Gültigkeitszeitraums möglicherweise nicht, oder die Verwendung des Dateimodus-Cachings kann die Anforderungen erfüllen, sodass das System auch einen schnellen Cache speziell für den Dateimodus bereitstellt . Cache-Methode F-Methode. Die F-Methode kann nur zum Zwischenspeichern einfacher Datentypen verwendet werden und unterstützt keine Gültigkeitszeiträume und zwischengespeicherten Objekte. Verwenden Sie Folgendes:

 //快速缓存Data数据,默认保存在DATA_PATH目录下面    
      F('data',$data);
    //快速缓存Data数据,保存到指定的目录   
      F('data',$data,TEMP_PATH);
      F('user/data',$data);
    //删除缓存数据
      F('data',null);
    //获取缓存数据
      $data=F('data');

Konfigurationsdatei config.php

//动态缓存,缓存文件存在于\Runtime\Temp
'DATA_CACHE_TYPE'=>'file',
'DATA_CACHE_TIME'=>'3600',
//'DATA_CACHE_SUBDIR'=>true,//开启子目录
//'DATA_CACHE_LEVEL'=>3,//设置子目录的层次

Aktion Datei:

 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);
    }
  }

Beim ersten Besuch wird folgendes Bild angezeigt:

Nach dem erneuten Aktualisieren wird folgendes Bild angezeigt:

Das Folgende ist eine separate Einführung in den schnellen Cache der F-Methode in ThinkPHP

Die Verwendung des Dateimodus-Caching kann erfüllt werden Daher stellt das System auch einen schnellen Cache für den Dateimodus bereit. Cache-Methode F-Methode

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

Auf diese Weise wird der Inhalt der Zeichenfolge $str in der Datei ../Public/Runtime abgelegt /str/andy.php und die Datei von

andy.php Der Inhalt ist wie folgt:

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

Der folgende Codeabschnitt ist eine Übersicht über die ThinkPHP-Caching-Methode S()

thinkPHPs F-Methode kann nur zum Zwischenspeichern einfacher Daten verwendet werden. Typ, Ablauf und Cache-Objekte werden nicht unterstützt. Die S()-Cache-Methode unterstützt den Gültigkeitszeitraum, auch bekannt als dynamische Cache-Methode. Das Verwendungsbeispiel lautet wie folgt:

Der Code lautet wie folgt:

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

Der Code lautet wie folgt:

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

Der Code lautet wie folgt:

// 删除缓存数据
S(&#39;data&#39;,NULL);  //第一个参数时缓存的标识名

Der Code lautet wie folgt:

$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); //删除缓存

Das Obige ist der gesamte Inhalt dieses Artikels Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website!

Verwandte Empfehlungen:

Analyse zur ThinkPHP-Implementierung von statischem Caching und dynamischem Caching

Das obige ist der detaillierte Inhalt vonThinkPHP-Cache, schneller Cache und dynamischer Cache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn