< ?php /** * * @var $cache_file_name string file name * @var $age int age in seconds */ class cache { public $cache_file_name; public $age; /** * cache::__construct() * @access public */ public function __construct(){ $this->cache_start(); register_shutdown_function(array($this, "cache_end"), "inside"); } /** * cache::__descruct() * @access public * @return */ public function __descruct(){ $this->cache_end(); } /** * cache::cache_start() * @access public * @return */ public function cache_start(){ global $cache_file_name, $age; $cache_file_name = $_SERVER["DOCUMENT_ROOT"].$_SERVER['REQUEST_URI'] . '_cache'; if (empty($age)){ $age = 600; } if(file_exists($cache_file_name)){ if (filemtime($cache_file_name) + $age > time()) { readfile($cache_file_name); unset($cache_file_name); exit; } } ob_start(); } /** * cache::cache_end() * @access public * @return */ public function cache_end() { global $cache_file_name; if (empty($cache_file_name)){ return; } $str = ob_get_clean(); echo $str; fwrite(fopen($cache_file_name . '_tmp', "w"), $str); rename($cache_file_name . '_tmp',$cache_file_name); } } ?>