程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 一個PHP緩存類代碼(附詳細說明)

一個PHP緩存類代碼(附詳細說明)

編輯:關於PHP編程

復制代碼 代碼如下:
<?php
define('CACHE_ROOT', dirname(__FILE__).'/cache'); //緩存存放目錄
define('CACHE_TIME', 1800);//緩存時間 單位秒
define('CACHE_FIX','.html');
$CacheName=md5($_SERVER['REQUEST_URI']).CACHE_FIX; //緩存文件名
$CacheDir=CACHE_ROOT.'/'.substr($CacheName,0,1);//緩存文件存放目錄
$CacheUrl=$CacheDir.'/'.$CacheName;//緩存文件的完整路徑
//GET方式請求才緩存,POST之後一般都希望看到最新的結果
if($_SERVER['REQUEST_METHOD']=='GET'){
//如果緩存文件存在,並且沒有過期,就把它讀出來。
if(file_exists($CacheName) && time()-filemtime($CacheName)<CACHE_TIME){
$fp=fopen($CacheName,'rb');
fpassthru($fp);
fclose($fp);
exit;
}
//判斷文件夾是否存在,不存在則創建
elseif(!file_exists($CacheDir)){
if(!file_exists(CACHE_ROOT)){
mkdir(CACHE_ROOT,0777);
chmod(CACHE_ROOT,0777);
}
mkdir($CacheDir,0777);
chmod($CacheDir,0777);
}
//回調函數,當程序結束時自動調用此函數
function AutoCache($contents){
global $CacheUrl;
$fp=fopen($CacheUrl,'wb');
fwrite($fp,$contents);
fclose($fp);
chmod($CacheUrl,0777);
//生成新緩存的同時,自動刪除所有的老緩存,以節約空間,可忽略。
//DelOldCache();
return $contents;
}
function DelOldCache(){
chdir(CACHE_ROOT);
foreach (glob("*/*".CACHE_FIX) as $file){
if(time()-filemtime($file)>CACHE_TIME)unlink($file);
}
}
//回調函數 auto_cache
ob_start('AutoCache');
}else{
//不是GET的請求就刪除緩存文件。
if(file_exists($CacheUrl))unlink($CacheUrl);
}
?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved