file = $file; $this->compression = $compression; if ($compression == 'gz') { $this->file_handle = gzopen( $file, 'w' ); } else if ($compression == 'bz') { $this->file_handle = bzopen( $file, 'w' ); } else { $this->file_handle = fopen( $file, 'wb' ); } ob_start( array( $this, 'output_callback' ) ); } public function __destruct() { $this->end(); } public function is_valid() { return $this->file_handle != false; } // only works if output is being redirected with compression public function end() { @ob_end_flush(); if ( $this->file_handle ) { if ( $this->compression == 'gz' ) { gzclose( $this->file_handle ); } if ( $this->compression == 'bz' ) { bzclose( $this->file_handle ); } else { fclose( $this->file_handle ); } $this->file_handle = null; return true; } } public function output_callback( $buffer ) { if ( $this->compression == 'gz' ) { gzwrite( $this->file_handle, $buffer ); }else if ( $this->compression == 'bz' ) { bzwrite( $this->file_handle, $buffer ); } else { fwrite( $this->file_handle, $buffer ); } } } } ?>