一個PHP緩存類代碼(附詳細(xì)說明)
更新時間:2011年06月09日 21:27:02 作者:
一個PHP緩存類代碼,后面都有詳細(xì)的說明,學(xué)習(xí)php的朋友可以參考下。
復(fù)制代碼 代碼如下:
<?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之后一般都希望看到最新的結(jié)果
if($_SERVER['REQUEST_METHOD']=='GET'){
//如果緩存文件存在,并且沒有過期,就把它讀出來。
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é)束時自動調(diào)用此函數(shù)
function AutoCache($contents){
global $CacheUrl;
$fp=fopen($CacheUrl,'wb');
fwrite($fp,$contents);
fclose($fp);
chmod($CacheUrl,0777);
//生成新緩存的同時,自動刪除所有的老緩存,以節(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的請求就刪除緩存文件。
if(file_exists($CacheUrl))unlink($CacheUrl);
}
?>
相關(guān)文章
解析在zend Farmework下如何創(chuàng)立一個FORM表單
本篇文章是對在zend Farmework下如何創(chuàng)立一個FORM表單的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06javascript+php實現(xiàn)根據(jù)用戶時區(qū)顯示當(dāng)?shù)貢r間的方法
這篇文章主要介紹了javascript+php實現(xiàn)根據(jù)用戶時區(qū)顯示當(dāng)?shù)貢r間的方法,實例分析javascript獲取客戶端時區(qū)及與服務(wù)器端php交互的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03PHP數(shù)組及條件,循環(huán)語句學(xué)習(xí)
PHP數(shù)組及條件,循環(huán)語句學(xué)習(xí),需要的朋友可以參考下2012-11-11SQL server不支持utf8 php卻用utf8的矛盾問題解決方法
這篇文章主要介紹了SQL server不支持utf8 php卻用utf8的矛盾問題解決方法,需要的朋友可以參考下2020-03-03PHP 抓取網(wǎng)頁圖片并且另存為的實現(xiàn)代碼
URL是遠(yuǎn)程的完整圖片地址,不能為空, $filename 是另存為的圖片名字 默認(rèn)把圖片放在以此腳本相同的目錄里2010-03-03PHP 抽象方法與抽象類abstract關(guān)鍵字介紹及應(yīng)用
抽象方法指沒有方法體的方法,只要一個類里面有一個方法是抽象方法,那么這個類就要定義為抽象類,不了解的朋友可以看看2014-10-10