Discuz教程网

一个PHP缓存类代码,后面都有详细的说明,学习php的朋友可以参考下。

[复制链接]
authicon 星火燎原 发表于 2011-6-11 08:38:02 | 显示全部楼层 |阅读模式
一个PHP缓存类代码,后面都有详细的说明,学习php的朋友可以参考下。
代码如下:
  1. <?php
  2. define('CACHE_ROOT', dirname(__FILE__).'/cache'); //缓存存放目录
  3. define('CACHE_TIME', 1800);//缓存时间 单位秒
  4. define('CACHE_FIX','.html');
  5. $CacheName=md5($_SERVER['REQUEST_URI']).CACHE_FIX; //缓存文件名
  6. $CacheDir=CACHE_ROOT.'/'.substr($CacheName,0,1);//缓存文件存放目录
  7. $CacheUrl=$CacheDir.'/'.$CacheName;//缓存文件的完整路径
  8. //GET方式请求才缓存,POST之后一般都希望看到最新的结果
  9. if($_SERVER['REQUEST_METHOD']=='GET'){
  10. //如果缓存文件存在,并且没有过期,就把它读出来。
  11. if(file_exists($CacheName) && time()-filemtime($CacheName)<CACHE_TIME){
  12. $fp=fopen($CacheName,'rb');
  13. fpassthru($fp);
  14. fclose($fp);
  15. exit;
  16. }
  17. //判断文件夹是否存在,不存在则创建
  18. elseif(!file_exists($CacheDir)){
  19. if(!file_exists(CACHE_ROOT)){
  20. mkdir(CACHE_ROOT,0777);
  21. chmod(CACHE_ROOT,0777);
  22. }
  23. mkdir($CacheDir,0777);
  24. chmod($CacheDir,0777);
  25. }
  26. //回调函数,当程序结束时自动调用此函数
  27. function AutoCache($contents){
  28. global $CacheUrl;
  29. $fp=fopen($CacheUrl,'wb');
  30. fwrite($fp,$contents);
  31. fclose($fp);
  32. chmod($CacheUrl,0777);
  33. //生成新缓存的同时,自动删除所有的老缓存,以节约空间,可忽略。
  34. //DelOldCache();
  35. return $contents;
  36. }
  37. function DelOldCache(){
  38. chdir(CACHE_ROOT);
  39. foreach (glob("*/*".CACHE_FIX) as $file){
  40. if(time()-filemtime($file)>CACHE_TIME)unlink($file);
  41. }
  42. }
  43. //回调函数 auto_cache
  44. ob_start('AutoCache');
  45. }else{
  46. //不是GET的请求就删除缓存文件。
  47. if(file_exists($CacheUrl))unlink($CacheUrl);
  48. }
  49. ?>
复制代码




上一篇:IIS7.X配置PHP运行环境小结
下一篇:apache+php完美解决301重定向的两种方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 05:01

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表