PHPキャッシュクラス送信の原理

WBOY
リリース: 2016-06-21 08:54:49
オリジナル
938 人が閲覧しました

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 リクエスト後にのみキャッシュされます。通常は、最新の結果を確認する必要があります。

if($_SERVER['REQUEST_METHOD']=='GET'){

//キャッシュ ファイルが存在し、有効期限が切れていない場合は、それを読み出します。

if(file_exists($CacheName) && time()-filemtime($CacheName)

$fp=fopen($CacheName,'rb');

fパススルー($fp)

fclose($fp);

終了

}

// フォルダーが存在するかどうかを判断し、存在しない場合は作成します

elseif(!file_exists($CacheDir)){

if(!file_exists(CACHE_ROOT)){

mkdir(CACHE_ROOT,0777);

chmod(CACHE_ROOT,0777);

}

mkdir($CacheDir,0777);

chmod($CacheDir,0777);

}

//コールバック関数、この関数はプログラム終了時に自動的に呼び出されます

関数 AutoCache($contents){

グローバル $CacheUrl

$fp=fopen($CacheUrl,'wb');

fwrite($fp,$contents)

fclose($fp);

chmod($CacheUrl,0777);

//新しいキャッシュの生成中に、スペースを節約するためにすべての古いキャッシュが自動的に削除されますが、無視しても構いません。

//DelOldCache();

$content を返す;

}

関数 DelOldCache(){

chdir(CACHE_ROOT)

foreach (glob("*/*".CACHE_FIX) as $file){

if(time()-filemtime($file)>CACHE_TIME)unlink($file);

}

}

//コールバック関数 auto_cache

ob_start('AutoCache');

}その他{

// GET リクエストでない場合はキャッシュ ファイルを削除します。

if(file_exists($CacheUrl))unlink($CacheUrl);

}

?>



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート