2PHP页面缓存

简介:
Java代码   收藏代码
  1. <?php  
  2. /* 
  3. * 缓存类 cache 
  4. * 作    者:多菜鸟 
  5. * 联系邮箱:kingerq AT msn DOT com 
  6. * 创建时间:2006-05-05 
  7. * 实    例: 
  8. include( "cache.php" ); 
  9.   
  10. $cache = new cache(30); 
  11. $cache->cacheCheck(); 
  12.  
  13. echo date("Y-m-d H:i:s"); 
  14.  
  15. //$cache->clearCache('mv_moves.php'); 
  16. $cache->caching(); 
  17. */  
  18. class cache {  
  19.   //缓存目录  
  20.   var $cacheRoot        = "./cache/";  
  21.   //缓存更新时间秒数,0为不缓存  
  22.   var $cacheLimitTime   = 0;  
  23.   //缓存文件名  
  24.   var $cacheFileName    = "";  
  25.   //缓存扩展名  
  26.   var $cacheFileExt     = "php";  
  27.    
  28.   /* 
  29.    * 构造函数 
  30.    * int $cacheLimitTime 缓存更新时间 
  31.    */  
  32.   function cache( $cacheLimitTime ) {  
  33.     if( intval( $cacheLimitTime ) )  
  34.       $this->cacheLimitTime = $cacheLimitTime;  
  35.     $this->cacheFileName = $this->getCacheFileName();  
  36.     ob_start();  
  37.   }  
  38.    
  39.   /* 
  40.    * 检查缓存文件是否在设置更新时间之内 
  41.    * 返回:如果在更新时间之内则返回文件内容,反之则返回失败 
  42.    */  
  43.   function cacheCheck(){  
  44.     if( file_exists( $this->cacheFileName ) ) {  
  45.       $cTime = $this->getFileCreateTime( $this->cacheFileName );  
  46.       if( $cTime + $this->cacheLimitTime > time() ) {  
  47.         echo file_get_contents( $this->cacheFileName );  
  48.         ob_end_flush();  
  49.         exit;  
  50.       }  
  51.     }  
  52.     return false;  
  53.   }  
  54.    
  55.   /* 
  56.    * 缓存文件或者输出静态 
  57.    * string $staticFileName 静态文件名(含相对路径) 
  58.    */  
  59.   function caching( $staticFileName = "" ){  
  60.     if( $this->cacheFileName ) {  
  61.       $cacheContent = ob_get_contents();  
  62.       //echo $cacheContent;  
  63.       ob_end_flush();  
  64.    
  65.       if( $staticFileName ) {  
  66.           $this->saveFile( $staticFileName, $cacheContent );  
  67.       }  
  68.    
  69.       if( $this->cacheLimitTime )  
  70.         $this->saveFile( $this->cacheFileName, $cacheContent );  
  71.     }  
  72.   }  
  73.    
  74.   /* 
  75.    * 清除缓存文件 
  76.    * string $fileName 指定文件名(含函数)或者all(全部) 
  77.    * 返回:清除成功返回true,反之返回false 
  78.    */  
  79.   function clearCache( $fileName = "all" ) {  
  80.     if( $fileName != "all" ) {  
  81.       $fileName = $this->cacheRoot . strtoupper(md5($fileName)).".".$this->cacheFileExt;  
  82.       if( file_exists( $fileName ) ) {  
  83.         return @unlink( $fileName );  
  84.       }else return false;  
  85.     }  
  86.     if ( is_dir( $this->cacheRoot ) ) {  
  87.       if ( $dir = @opendir( $this->cacheRoot ) ) {  
  88.         while ( $file = @readdir( $dir ) ) {  
  89.           $check = is_dir( $file );  
  90.           if ( !$check )  
  91.           @unlink( $this->cacheRoot . $file );  
  92.         }  
  93.         @closedir( $dir );  
  94.         return true;  
  95.       }else{  
  96.         return false;  
  97.       }  
  98.     }else{  
  99.       return false;  
  100.     }  
  101.   }  
  102.    
  103.   /* 
  104.    * 根据当前动态文件生成缓存文件名 
  105.    */  
  106.   function getCacheFileName() {  
  107.     return  $this->cacheRoot . strtoupper(md5($_SERVER["REQUEST_URI"])).".".$this->cacheFileExt;  
  108.   }  
  109.    
  110.   /* 
  111.    * 缓存文件建立时间 
  112.    * string $fileName   缓存文件名(含相对路径) 
  113.    * 返回:文件生成时间秒数,文件不存在返回0 
  114.    */  
  115.   function getFileCreateTime( $fileName ) {  
  116.     if( ! trim($fileName) ) return 0;  
  117.    
  118.     if( file_exists( $fileName ) ) {  
  119.       return intval(filemtime( $fileName ));  
  120.     }else return 0;  
  121.   }  
  122.    
  123.   /* 
  124.    * 保存文件 
  125.    * string $fileName  文件名(含相对路径) 
  126.    * string $text      文件内容 
  127.    * 返回:成功返回ture,失败返回false 
  128.    */  
  129.   function saveFile($fileName, $text) {  
  130.     if( ! $fileName || ! $text ) return false;  
  131.    
  132.     if( $this->makeDir( dirname( $fileName ) ) ) {  
  133.       if( $fp = fopen( $fileName, "w" ) ) {  
  134.         if@fwrite( $fp, $text ) ) {  
  135.           fclose($fp);  
  136.           return true;  
  137.         }else {  
  138.           fclose($fp);  
  139.           return false;  
  140.         }  
  141.       }  
  142.     }  
  143.     return false;  
  144.   }  
  145.    
  146.   /* 
  147.    * 连续建目录 
  148.    * string $dir 目录字符串 
  149.    * int $mode   权限数字 
  150.    * 返回:顺利创建或者全部已建返回true,其它方式返回false 
  151.    */  
  152.   function makeDir( $dir, $mode = "0777" ) {  
  153.     if( ! $dir ) return 0;  
  154.     $dir = str_replace( "\\", "/", $dir );  
  155.       
  156.     $mdir = "";  
  157.     foreach( explode( "/", $dir ) as $val ) {  
  158.       $mdir .= $val."/";  
  159.       if( $val == ".." || $val == "." || trim( $val ) == "" ) continue;  
  160.         
  161.       if( ! file_exists( $mdir ) ) {  
  162.         if(!@mkdir( $mdir, $mode )){  
  163.          return false;  
  164.         }  
  165.       }  
  166.     }  
  167.     return true;  
  168.   }  
  169. }  
  170. ?>  
相关文章
|
7月前
|
存储 缓存 自然语言处理
深入PHP内核:理解Opcode缓存对性能的影响
【4月更文挑战第25天】 在提升PHP应用性能的众多策略中,Opcode缓存技术因其显著的效果和较低的复杂度而备受开发者青睐。本文将深入探讨Opcode缓存机制,解析其对PHP执行效率的提升原理,并通过实验数据展示启用Opcode缓存前后的性能差异。我们还将讨论几种流行的Opcode缓存工具,如APC、OpCache与APCu,并评估它们的优劣及适用场景,帮助开发者根据不同的项目需求做出合适的选择。通过本文,读者不仅能够了解Opcode缓存的工作原理,还能学会如何在实际项目中应用这一技术以优化PHP应用程序的性能。
|
7月前
|
设计模式 PHP
php设计模式--观察者模式(4.1)面向过程完成页面内容切换
php设计模式--观察者模式(4.1)面向过程完成页面内容切换
39 0
|
3月前
|
JavaScript 前端开发 安全
php学习笔记-普通表单参数提交获取及页面的重定向和一个登录小demo-day05
本文介绍了PHP中普通表单参数的提交获取、页面重定向的方法,并通过一个登录示例演示了表单参数的封装和页面跳转处理。
|
22天前
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
36 5
|
7月前
|
存储 缓存 自然语言处理
深入PHP内核:理解Opcode缓存与性能优化
【5月更文挑战第14天】 在动态语言的世界里,PHP一直因其高性能的执行效率和广泛的社区支持而备受青睐。随着Web应用的复杂性增加,对性能的要求也越来越高。本文将探讨PHP的Opcode缓存机制,解析其对性能提升的贡献,并展示如何通过配置和使用不同的Opcode缓存方案来进一步优化PHP应用的性能。我们将深入到PHP的核心,了解Opcode是如何生成的,以及它如何影响最终的执行效率。
|
2月前
|
缓存 NoSQL 数据处理
原生php实现redis缓存配置和使用方法
通过上述步骤,你可以在PHP项目中配置并使用Redis作为高性能的缓存解决方案。合理利用Redis的各种数据结构和特性,可以有效提升应用的响应速度和数据处理效率。记得在实际应用中根据具体需求选择合适的缓存策略,如设置合理的过期时间,以避免内存过度消耗。
56 0
|
3月前
|
搜索推荐 PHP UED
PHP中的异常处理与自定义错误页面
【8月更文挑战第33天】在PHP开发中,优雅地处理异常和错误是提升应用稳定性和用户体验的关键。本文将引导你理解PHP的异常处理机制,并教你如何创建自定义错误页面,以增强你的应用对错误的响应能力。从基本的错误类型到深入的异常捕获,再到实现个性化的用户提示,我们将一步步构建一个更加健壮的PHP应用。
38 4
|
4月前
|
存储 缓存 自然语言处理
|
7月前
|
存储 缓存 PHP
深入PHP内核:理解Zend Engine与Opcode缓存
【5月更文挑战第30天】 在PHP的开发世界中,性能优化是一个永恒的话题。随着现代Web应用的复杂性日益增加,仅仅依靠代码层面的优化已经远远不够。本文将深入探讨PHP的执行心脏——Zend Engine,以及如何通过Opcode缓存机制提升PHP应用的执行效率。我们将透过对Zend Engine工作原理的分析,了解Opcode缓存的实现原理,并通过实例来展示其对性能提升的显著影响。
|
7月前
|
存储 缓存 自然语言处理
深入PHP内核:探索Opcode缓存机制
【5月更文挑战第1天】 在动态语言如PHP的执行过程中,每次脚本被请求时都需要经过一系列复杂的解析和编译步骤。为了优化这一过程并提高性能,PHP引入了Opcode缓存机制。本文将详细探讨Opcode的概念、作用以及它如何显著提升PHP应用的执行效率。我们将从缓存原理出发,分析几种常见的Opcode缓存工具,并通过实例说明如何在实际项目中实现和优化缓存策略。