日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

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

發布時間:2024/8/26 php 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

系統默認的緩存方式是采用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文件:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 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 'asdfasdfasdaaaaaaaaaaaaaaaaaaaaaa';
?>

下面一段代碼是ThinkPHP緩存方法S()概述

thinkPHP的F方法只能用于緩存簡單數據類型,不支持有效期和緩存對象。S()緩存方法支持有效期,又稱動態緩存方法,使用示例如下:

代碼如下:

?

復制代碼代碼如下:
// 使用data標識緩存$Data數據
S('data',$Data);? //前面的是緩存標示,后面的是緩存的數據

?

代碼如下:

// 緩存$Data數據3600秒
S('data',$Data,3600);

?代碼如下:

?

復制代碼代碼如下:
// 刪除緩存數據
S('data',NULL);? //第一個參數時緩存的標識名

?

代碼如下:

?
1 2 3 4 5 6 7 8 9 10 11 $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); //刪除緩存

轉載于:https://www.cnblogs.com/danbilly/p/5058898.html

總結

以上是生活随笔為你收集整理的浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。