From ec7110b0f19e784518eb4e2e313026ca7b9987fd Mon Sep 17 00:00:00 2001 From: "Paul S. Owen" Date: Sat, 30 Jun 2001 23:36:10 +0000 Subject: [PATCH] Updated gzip encoding for < 4.0.4pl1 I think ... git-svn-id: file:///svn/phpbb/trunk@529 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/page_header.php | 13 +++++++++---- phpBB/includes/page_tail.php | 23 ++++++++++++++++++++++- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/phpBB/includes/page_header.php b/phpBB/includes/page_header.php index 165d5566de..24dcf19ee8 100644 --- a/phpBB/includes/page_header.php +++ b/phpBB/includes/page_header.php @@ -27,6 +27,7 @@ define(HEADER_INC, TRUE); // // gzip_compression // +$do_gzip_compress = FALSE; if($board_config['gzip_compress']) { $phpver = phpversion(); @@ -40,10 +41,14 @@ if($board_config['gzip_compress']) } else if($phpver > "4.0") { - // It would be nice if we - // used output buffering here - // to allow compression for - // versions < 4.0.4pl1 + if(strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip')) + { + $do_gzip_compress = TRUE; + ob_start(); + ob_implicit_flush(0); + + header("Content-Encoding: gzip"); + } } } diff --git a/phpBB/includes/page_tail.php b/phpBB/includes/page_tail.php index 4c22747ce1..0d154a1df5 100644 --- a/phpBB/includes/page_tail.php +++ b/phpBB/includes/page_tail.php @@ -53,6 +53,27 @@ $totaltime = ($endtime - $starttime); printf("
phpBB Created this page in %f seconds.
", $totaltime); +// +// Compress buffered output if required +// and send to browser +// +if($do_gzip_compress) +{ + $gzip_contents = ob_get_contents(); + ob_end_clean(); + + $gzip_size = strlen($gzip_contents); + $gzip_crc = crc32($gzip_contents); + + $gzip_contents = gzcompress($gzip_contents, 9); + $gzip_contents = substr($gzip_contents, 0, strlen($gzip_contents) - 4); + + echo "\x1f\x8b\x08\x00\x00\x00\x00\x00"; + echo $gzip_contents; + echo pack("V", $gzip_crc); + echo pack("V", $gzip_size); +} + exit; -?> +?> \ No newline at end of file