国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php中文件緩存實現程序代碼

2024-05-04 21:48:37
字體:
來源:轉載
供稿:網友

php文件緩存就是指把緩存生成一個文件,這個文件可以是php,txt等等文件,當我下載訪問時就來判斷訪問上次生成時間,如果超過了我們指定的時間再重新生成一次,否則就直接調用緩存文件,這樣就可以減少了對mysql數據庫的查詢了.

php文件緩存原理

把需要緩存的數據通過serialize函數序列化后直接保存到文件,在需要使用緩存數據的時候,通過反序列化讀入文件內容并復制給需要的變量,然后使用,不經常改動的數據可以寫入緩存文件.

php文件緩存實例,代碼如下:

  1.  index.php
  2.  
  3. define('CACHE_ROOT','./'); 
  4.  include_once('./cache.func.php'); 
  5.  $file = 'qzp'
  6.  $cacheFile = getCacheFileByID($file,'info/'); 
  7.  
  8.  print_R(readCache($cacheFile)); 
  9.  
  10.  $info = array
  11.       'username'=>'qzp'
  12.       'area_name'=>'admin'
  13.       'mp_name'=>'1234'
  14.       'gh_name'=>'5678'); 
  15. writeCache($cacheFile,$info); 
  16.  
  17. cache.func.php文件 
  18.  
  19.  function arrayeval($array$level = 0) { 
  20.     $space = ''
  21.     for($i = 0; $i <= $level$i++) { 
  22.         $space .= "t"
  23.     } 
  24.     $evaluate = "Arrayn$space(n"
  25.     $comma = $space
  26.     foreach($array as $key => $val) { 
  27.         $key = is_string($key) ? '''.addcslashes($key, ''/').''' : $key
  28.         $val = !is_array($val) && (!preg_match("/^-?[1-9]d*$/"$val) || strlen($val) > 12) ? '''.addcslashes($val, ''/').''' : $val
  29.         if(is_array($val)) { 
  30.             $evaluate .= "$comma$key => ".arrayeval($val$level + 1); 
  31.         } else { 
  32.             $evaluate .= "$comma$key => $val"
  33.         } 
  34.         $comma = ",n$space"
  35.     } 
  36.     $evaluate .= "n$space)"
  37.     return $evaluate
  38.  
  39. function getCacheFileByID($id,$pre='info/',$md5=true){ 
  40.  if($md5){ 
  41.   $md5id = md5($id); 
  42.   return CACHE_ROOT.'/'.$pre.substr($md5id,0,2).'/'.substr($md5id,2,2).'/'.$id
  43.  }else
  44.   return CACHE_ROOT.'/'.$pre.$id
  45.  } 
  46.  
  47. function readCache($filename,$time=0){ 
  48.  if($datas = @file_get_contents($filename)){ 
  49.   $datas = unserialize($datas); 
  50.   if($time < 1 || (time() - $datas['time'] < $time)){ 
  51.    return $datas['data']; 
  52.   } 
  53.  } 
  54.  return false; 
  55.  
  56. function writeCache($filename,$data){ 
  57.  makeDir(dirname($filename)); 
  58.  if($handle = fopen($filename,'w+')){ 
  59.   $datas = array('data'=>$data,'time'=>time()); 
  60.   flock($handle,LOCK_EX); 
  61.   $rs = fputs($handle,serialize($datas)); 
  62.   flock($handle,LOCK_UN); 
  63.   fclose($handle); 
  64.   if($rs!==false){ 
  65.    return true; 
  66.   } 
  67.  } 
  68.  return false; 
  69.  
  70. function makeDir($path
  71. {//開源代碼Vevb.com 
  72.  if (! file_exists ( $path )) { 
  73.   makeDir ( dirname ( $path ) ); 
  74.   if (! mkdir ( $path, 0777 )) 
  75.   die ( '無法創建文件夾' . $path ); 
  76.  } 

把要緩存的文件序列化下存放起來,當使用的時候反序列化回來使用,使用對PHP模板數據進行緩存的工具smarty,smarty將HTML文件緩存成一個靜態的HTML頁,需要緩存的模板文件可以使用smarty.

例,代碼如下:

  1. <?php 
  2. //包含Smarty類庫 
  3. require('libs/Smarty.class.php'); 
  4.  
  5. //創建Smarty類的對象 
  6. $smarty = new Smarty; 
  7.  
  8. //啟用緩存 
  9. $smarty->caching = true; 
  10.  
  11. //指定緩存文件保存的目錄 
  12. $smarty->cache_dir = "./cache/"
  13.  
  14. //也會把輸出保存 
  15. $smarty->display('index.tpl'
  16. ?> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东海县| 济源市| 乐都县| 湟源县| 翼城县| 西丰县| 东丽区| 阿巴嘎旗| 社会| 上蔡县| 阳城县| 济宁市| 祥云县| 张北县| 广西| 江源县| 淮南市| 金昌市| 临朐县| 喀什市| 肥城市| 阿克陶县| 乌兰县| 武川县| 虎林市| 元阳县| 扶余县| 新巴尔虎右旗| 绿春县| 隆尧县| 兴义市| 沈阳市| 轮台县| 延边| 福泉市| 新干县| 镇坪县| 淅川县| 尖扎县| 新宾| 错那县|