start(); * * # Your Page Contents With print * phpinfo(); * * $cache->_end(); * */ class fileCache { var $_file; var $cache_time; function fileCache($_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(); $content = str_replace(array("\r","\n","\t"),'',$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 ''.$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); } } } ?>