PHP缓存类代码(详细)
复制代码代码如下所示:< PHP
定义('cache_root,dirname(__file__)。 /缓存); / /缓存目录
定义('cache_time ',1800); / /缓存时间秒数
定义('cache_fix '、'。HTML);
cachename美元= MD5($ _server { 'request_uri}。cache_fix); / /缓存文件名
cachedir = cache_root美元。' / '。substr($ cachename,0,1); / /缓存文件目录
cacheurl美元= cachedir美元。/。cachename美元; / /缓存文件的完整路径
缓存模式GET请求,一般预期邮政会看到最新结果。
如果($ _server { } = = ' ' 'request_method){
如果缓存文件存在,并且没有过期,请读出它。
如果(file_exists($ cachename)时间(个)-($ cachename)< cache_time){
$ FP = fopen(cachename美元,'rb);
处($ FP);
Fclose($ FP);
出口;
}
法官文件夹存在,不存在是被创建的
(!file_exists($ cachedir)){
如果(!file_exists(cache_root)){
mkdir(cache_root,0777);
Chmod(cache_root,0777);
}
mkdir(cachedir美元,0777);
chmod(cachedir美元,0777);
}
当该函数在程序结束时自动调用时返回函数。
功能autocache($内容){
全球cacheurl美元;
$ FP = fopen(cacheurl美元,'wb);
fwrite(FP美元美元,内容);
Fclose($ FP);
chmod(cacheurl美元,0777);
新一代缓存,同时自动删除所有旧的缓存,节省空间,可以忽略。
/ / deloldcache();
返回$内容;
}
功能deloldcache(){
Chdir(cache_root);
foreach(glob(× / * 。cache_fix)作为文件){
如果(时间()()-个(文件)> cache_time)unlink(文件);
}
}
/ / auto_cache回调函数
ob_start('autocache);
其他{ }
不获取删除缓存文件的请求。
如果(file_exists($ cacheurl))unlink($ cacheurl);
}
>