ThinkPHP緩衝之快速緩衝和動態緩衝

來源:互聯網
上載者:User
thinkPHP的F方法只能用於緩衝單一資料型別,不支援有效期間和緩衝對象。S()緩衝方法支援有效期間,又稱動態緩衝方法。本文是小編日常整理有關thinkphp緩衝方法,對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 的檔案內容如下:

<?phpreturn '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); //刪除緩衝

以上就是本文的全部內容,希望對大家的學習有所協助,更多相關內容請關注topic.alibabacloud.com!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.