web
/***************************************
** title.........: php4 http compression speeds up the web
** version.......: 1.10
** author........: catoc
** filename......: gzdoc.php
** last changed..: 25/08/2000
** requirments...: php4 >= 4.0.1
** php was configured with --with-zlib[=dir]
** notes.........: dynamic content acceleration compresses
** the data transmission data on the fly
** code by sun jin hu (catoc)
** most newer browsers since 1998/1999 have
** been equipped to support the http 1.1
** standard known as content-encoding.
** essentially the browser indicates to the
** server that it can accept content encoding
** and if the server is capable it will then
** compress the data and transmit it. the
** browser decompresses it and then renders
** the page.
** useage........:
** no space before the beginning of the first '' tag.
** ------------start of file----------
** |
** | include('gzdoc.php');
** | print start output !!;
** |?>
** |
** |... the page ...
** |
** |
** | gzdocout();
** |?>
** -------------end of file-----------
***************************************/
ob_start();
ob_implicit_flush(0);
function getheader(){
$headers = getallheaders();
while (list($header, $value) = each($headers)) {
$message .= $header: $value
\n;
}
return $message;
}
function checkcangzip(){
global $http_accept_encoding, $php_self, $wget, $remote_addr, $s_username;
if (connection_timeout() || connection_aborted()){
return 0;
}
if ((strpos('catoc'.$http_accept_encoding, 'gzip')) || $wget == 'y'){
if (strpos('catoc'.$http_accept_encoding, 'x-gzip')){
$encoding = x-gzip;
$error_msg = str_replace('
','',getheader());
$error_msg .= time: .date(y-m-d h:i:s).\n;
$error_msg .= remote-address: .$remote_addr.\n;
//mail('your@none.net', user have x-gzip output in file $php_self!!!, $error_msg);
}else{
$encoding = gzip;
}
return $encoding;
}else{
return 0;
}
}
function gzdocout(){
global $php_self, $catocgz, $remote_addr, $s_username;
$encoding = checkcangzip();
if ($encoding){
print \n\n;
$contents = ob_get_contents();
ob_end_clean();
if ($catocgz == 'y'){
print not compress lenth: .strlen($contents).
;
print compressed lenth: .strlen(gzcompress($contents)).
;
exit;
}else{
header(content-encoding: $encoding);
}
print pack('cccccccc',0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00);
$size = strlen($contents);
$crc = crc32($contents);
$contents = gzcompress($contents);
$contents = substr($contents, 0, strlen($contents) - 4);
print $contents;
print pack('v',$crc);
print pack('v',$size);
exit;
}else{
ob_end_flush();
$error_msg = str_replace('
','',getheader());
$error_msg .= time: .date(y-m-d h:i:s).\n;
$error_msg .= remote-address: .$remote_addr.\n;
//mail('your@none.net', user can not use gzip output in file $php_self!!!, $error_msg);
exit;
}
}
?>