一個(gè)PHP緩存類(lèi)代碼(附詳細(xì)說(shuō)明)
<?php
define('CACHE_ROOT', dirname(__FILE__).'/cache'); //緩存存放目錄
define('CACHE_TIME', 1800);//緩存時(shí)間 單位秒
define('CACHE_FIX','.html');
$CacheName=md5($_SERVER['REQUEST_URI']).CACHE_FIX; //緩存文件名
$CacheDir=CACHE_ROOT.'/'.substr($CacheName,0,1);//緩存文件存放目錄
$CacheUrl=$CacheDir.'/'.$CacheName;//緩存文件的完整路徑
//GET方式請(qǐng)求才緩存,POST之后一般都希望看到最新的結(jié)果
if($_SERVER['REQUEST_METHOD']=='GET'){
//如果緩存文件存在,并且沒(méi)有過(guò)期,就把它讀出來(lái)。
if(file_exists($CacheName) && time()-filemtime($CacheName)<CACHE_TIME){
$fp=fopen($CacheName,'rb');
fpassthru($fp);
fclose($fp);
exit;
}
//判斷文件夾是否存在,不存在則創(chuàng)建
elseif(!file_exists($CacheDir)){
if(!file_exists(CACHE_ROOT)){
mkdir(CACHE_ROOT,0777);
chmod(CACHE_ROOT,0777);
}
mkdir($CacheDir,0777);
chmod($CacheDir,0777);
}
//回調(diào)函數(shù),當(dāng)程序結(jié)束時(shí)自動(dòng)調(diào)用此函數(shù)
function AutoCache($contents){
global $CacheUrl;
$fp=fopen($CacheUrl,'wb');
fwrite($fp,$contents);
fclose($fp);
chmod($CacheUrl,0777);
//生成新緩存的同時(shí),自動(dòng)刪除所有的老緩存,以節(jié)約空間,可忽略。
//DelOldCache();
return $contents;
}
function DelOldCache(){
chdir(CACHE_ROOT);
foreach (glob("*/*".CACHE_FIX) as $file){
if(time()-filemtime($file)>CACHE_TIME)unlink($file);
}
}
//回調(diào)函數(shù) auto_cache
ob_start('AutoCache');
}else{
//不是GET的請(qǐng)求就刪除緩存文件。
if(file_exists($CacheUrl))unlink($CacheUrl);
}
?>
相關(guān)文章
解析在zend Farmework下如何創(chuàng)立一個(gè)FORM表單
本篇文章是對(duì)在zend Farmework下如何創(chuàng)立一個(gè)FORM表單的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06javascript+php實(shí)現(xiàn)根據(jù)用戶(hù)時(shí)區(qū)顯示當(dāng)?shù)貢r(shí)間的方法
這篇文章主要介紹了javascript+php實(shí)現(xiàn)根據(jù)用戶(hù)時(shí)區(qū)顯示當(dāng)?shù)貢r(shí)間的方法,實(shí)例分析javascript獲取客戶(hù)端時(shí)區(qū)及與服務(wù)器端php交互的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03PHP類(lèi)的自動(dòng)加載與命名空間用法實(shí)例分析
這篇文章主要介紹了PHP類(lèi)的自動(dòng)加載與命名空間,結(jié)合實(shí)例形式分析了PHP類(lèi)的自動(dòng)加載與命名空間相關(guān)概念、原理、用法與操作注意事項(xiàng),需要的朋友可以參考下2020-06-06PHP數(shù)組及條件,循環(huán)語(yǔ)句學(xué)習(xí)
PHP數(shù)組及條件,循環(huán)語(yǔ)句學(xué)習(xí),需要的朋友可以參考下2012-11-11SQL server不支持utf8 php卻用utf8的矛盾問(wèn)題解決方法
這篇文章主要介紹了SQL server不支持utf8 php卻用utf8的矛盾問(wèn)題解決方法,需要的朋友可以參考下2020-03-03PHP 抓取網(wǎng)頁(yè)圖片并且另存為的實(shí)現(xiàn)代碼
URL是遠(yuǎn)程的完整圖片地址,不能為空, $filename 是另存為的圖片名字 默認(rèn)把圖片放在以此腳本相同的目錄里2010-03-03PHP 抽象方法與抽象類(lèi)abstract關(guān)鍵字介紹及應(yīng)用
抽象方法指沒(méi)有方法體的方法,只要一個(gè)類(lèi)里面有一個(gè)方法是抽象方法,那么這個(gè)類(lèi)就要定義為抽象類(lèi),不了解的朋友可以看看2014-10-10