欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用php4加速网络传输

程序员文章站 2022-11-25 14:46:39
标 题: 使用php4加速网络传输。
标 题: 使用php4加速网络传输。

<?
/***************************************
** title.........: php4 http compression speeds up the web
** version.......: 1.10
** author........: catoc <catoc@163.net>
** 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) <catoc@163.net>
**                 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 !!";
**                 |?>
**                 |<html>
**                 |... the page ...
**                 |</html>
**                 |<?
**                 | gzdocout();
**                 |?>
**                 -------------end of file-----------
***************************************/
ob_start();
ob_implicit_flush(0);
function getheader(){
        $headers = getallheaders();
        while (list($header, $value) = each($headers)) {
                $message .= "$header: $value<br> ";
        }
        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('<br>','',getheader()
);
                        $error_msg .= "time: ".date("y-m-d h:i:s")."
";
                        $error_msg .= "remote-address: ".$remote_addr.
" ";
                        //mail('your@none.net', "user have x-gzip outp
ut 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 " <!-- use compress $encoding --> ";
                $contents = ob_get_contents();
                ob_end_clean();
                if ($catocgz == 'y'){
                        print "not compress lenth: ".strlen($contents)
."<br>";
                        print "compressed lenth: ".strlen(gzcompress($
contents))."<br>";
                        exit;
                }else{
                        header("content-encoding: $encoding");
                }
                print pack('cccccccc',0x1f,0x8b,0x08,0x00,0x00,0x00,0x
00,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('<br>','',getheader());
                $error_msg .= "time: ".date("y-m-d h:i:s")." ";
                $error_msg .= "remote-address: ".$remote_addr." ";
                //mail('your@none.net', "user can not use gzip output  
in file $php_self!!!", $error_msg);
                exit;
        }
}
?>