getFileName( $key ) , 'w' ); if ( !$h ) throw new Exception( 'Could not write to cache' ); $data = base64_encode( serialize( array( time() + $ttl , $data ) ) ); if ( fwrite( $h , $data ) === false ) throw new Exception('Could not write to cache'); fclose($h); } private function getFileName( $key ) { $md5 = md5( $key ); $dir = 'temp/' . $md5[0] . '/'; if ( !is_dir( $dir ) ) mkdir( $dir , 0770 , true ); return $dir . 's_cache' . $md5; } function fetch( $key ) { $filename = $this -> getFileName( $key ); if ( !file_exists( $filename ) || !is_readable( $filename ) ) return false; $data = base64_decode( file_get_contents( $filename ) ); $data = @unserialize( $data ); if ( !$data ) { unlink($filename); return false; } if ( time() > $data[0] ) { if ( file_exists( $filename ) ) unlink( $filename ); return false; } return $data[1]; } } ?>