PHP 캐시 클래스
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2016-07-25 09:09:58
- 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) $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);
- }
- ?>
复制代码
|
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31