/!PHP/???/cache/cache.php
PHP | 66 lines | 57 code | 4 blank | 5 comment | 10 complexity | 20bd3d71ca828ec5be1cfa3463a388ef MD5 | raw file
- <?php
- class cache
- {
- var $cache_dir = './cache/';//This is the directory where the cache files will be stored;
- var $cache_time = 120;//How much time will keep the cache files in seconds.
-
- var $caching = false;
- var $file = '';
-
- function cache()
- {
- //Constructor of the class
- $this->file = $this->cache_dir . urlencode( $_SERVER['REQUEST_URI'] );
- if(file_exists($this->file)) $expired = $this->check_expire();
- else $expired = false;
- if ( file_exists ( $this->file ) && ( filemtime ( $this->file ) + $this->cache_time ) > time() && !$expired )
- {
- //Grab the cache:
- $handle = fopen( $this->file , "r");
- do {
- $data = fread($handle, 8192);
- if (strlen($data) == 0) {
- break;
- }
- echo $data;
- } while (true);
- fclose($handle);
- exit();
- }
- else
- {
- //create cache :
- $this->caching = true;
- ob_start();
- $now = time();
- echo "<!--last modified:".$now."-->\n";
- }
- }
-
- function close()
- {
- //You should have this at the end of each page
- if ( $this->caching )
- {
- //You were caching the contents so display them, and write the cache file
- $data = ob_get_clean();
- echo $data;
- $fp = fopen( $this->file , 'w' );
- fwrite ( $fp , $data );
- fclose ( $fp );
- }
- }
- function check_expire(){
- $fp = fopen($this->file,"r");
- preg_match("/\:([\d]+)\-/",fread($fp,200),$time);
- $modify_time = $time[1];
- if($modify_time<filemtime($_SERVER['SCRIPT_FILENAME'])){
- return true;
- }
- else{
- return false;
- }
-
- }
- }
- ?>