php的缓存类
		来源:互联网  作者:未知  发布时间:2008-01-13
		
		php的缓存类 以下为引用的内容: ? php /* *FileName:
		
		
		
		          
 php的缓存类
    
        
            | 以下为引用的内容: 
 <?php/*
 *     FileName                     :     cache.inc.php
 *     Link                             :     [url]http://blog.csdn.net/dxflingxing/[/url]
 *     Author                             :     dxflingxing
 *     Date                             :     2006-5-9
 *     Last Modified                 :     2006-5-16
 *     Version                             :     1.0.1
 *     Description                     :     Cache a page in file formart
 *     Notice                             :     Make sure you cache file dir can be readed and wrote
 *
 *     Thanks to                     :     小邪,barryonline(寒)
 ************************************************************
 *
 *     Usage                             :
 *             # Cache active time half an hour
 *             # This Can Auotmatic make some none exist dirs
 *             # Or you can use an cache file in curent dir
 *             # The Usage Such as
 *             # $cache     = new cache(string cache_name,int seconds);
 *
 *             require ('cache.inc.php');
 *             $cache     = new cache('dir1/dir2/cache_name.htm',60*30);
 *
 *             $cache->start();
 *
 *             # Your Page Contents With print
 *             phpinfo();
 *
 *             $cache->_end();
 *
 */
 
 class cache {
 var $_file;
 var $cache_time;
 
 function cache($_file='_index.htm',$cache_time=1) {
 $this->_file             = $_file;
 $this->cache_time     = $cache_time;
 }
 
 /*
 * Start cache method without Return
 */
 function start() {
 
 if($this->cache_is_active()) {
 include($this->_file);
 exit;
 }
 ob_start();
 }
 
 /*
 * End of cache method without Return
 */
 function _end() {
 $this->make_cache();
 ob_end_flush();
 }
 
 /*
 * Check if cache file is actived
 * Return true/false
 */
 function cache_is_active() {
 if ($this->cache_is_exist()) {
 if (time() - $this->lastModified() < $this->cache_time)
 Return true;
 else {
 Return false;
 }
 }
 else {
 Return false;
 }
 }
 
 /*
 * Create cache file
 * Return true/false
 */
 function make_cache() {
 $content     = $this->get_cache_content();
 if($this->write_file($content)) {
 Return true;
 }
 else {
 Return false;
 }
 }
 
 /*
 * Check if cache file is exists
 * Return true/false
 */
 function cache_is_exist() {
 if(file_exists($this->_file)) {
 Return true;
 }
 else {
 Return false;
 }
 }
 
 /*
 * Return last Modified time in bollin formart
 * Usage: $lastmodified = $this->lastModified();
 */
 function lastModified() {
 Return @filemtime($this->_file);
 }
 
 /*
 * Return Content of Page
 * Usage: $content = $this->get_cache_content();
 */
 function get_cache_content() {
 $contents = ob_get_contents();
 //             Return '<!--'.date('Y-m-d H:i:s').'-->'.$contents;
 Return $contents;
 }
 
 /*Write content to $this->_file
 * Return true/false
 * Usage: $this->write_file($content);
 **/
 function write_file($content,$mode='w+')
 {
 $this->mk_dir($this->_file);
 if (!$fp = @fopen($this->_file,$mode)) {
 $this->report_Error($this->_file." 目录或者文件属性无法写入.");
 Return false;
 } else{
 @fwrite($fp,$content);
 @fclose($fp);
 @umask($oldmask);
 Return true;
 }
 }
 
 /*
 * Make given dir included in $this->_file
 * Without Return
 * Usage: $this->mk_dir();
 */
 function mk_dir()
 {     //$this->_file     = str_replace('','/');
 $dir     = @explode("/", $this->_file);
 $num     = @count($dir)-1;
 $tmp     = './';
 for($i=0; $i<$num; $i++){
 $tmp     .= $dir[$i];
 if(!file_exists($tmp)){
 @mkdir($tmp);
 @chmod($tmp, 0777);
 }
 $tmp     .= '/';
 }
 }
 
 /*
 * Unlink an exists cache
 * Return true/false
 * Usage: $this->clear_cache();
 */
 function clear_cache() {
 if (!@unlink($this->_file)) {
 $this->report_Error('Unable to remove cache');
 Return false;
 }
 else {
 Return true;
 }
 }
 
 /*
 * Report Error Messages
 * Usage: $this->report_Error($message);
 */
 function report_Error($message=NULL) {
 if($message!=NULL) {
 trigger_error($message);
 }
 }
 }
 ?>
 |