Просмотр файла o5on.ru/start_gzip.php

Размер файла: 2.92Kb
<?
/*
** Title.........: PHP4 HTTP Compression Speeds up the Web
** Version.......: 1.20
** Author........: catoc <[email protected]>
** Filename......: gzdoc.php
** Last changed..: 18/10/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) <[email protected]>
**                 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.
**
**                 Modified by John Lim ([email protected])
**                  based on ideas by Sandy McArthur,  Jr
** Usage........:
**                 No space before the beginning of the first '<?' tag.
**                 ------------Start of file----------
**                 |<?
**                 | include('gzdoc.php');
**                 |?>
**                 |<HTML>
**                 |... the page ...
**                 |</HTML>
**                 |<?
**                 | gzdocout();
**                 |?>
**                 -------------End of file-----------
*/
ob_start();
ob_implicit_flush(0);
function CheckCanGzip(){
    global $HTTP_ACCEPT_ENCODING;
    if (headers_sent() || connection_aborted()){
        return 0;
    }
    if (strpos($HTTP_ACCEPT_ENCODING,  'x-gzip') !== false) return "x-gzip";
    if (strpos($HTTP_ACCEPT_ENCODING, 'gzip') !== false) return "gzip";
    return 0;
}
/* $level = compression level 0-9,  0=none,  9=max */
function GzDocOut($level=3, $debug=1){
    $ENCODING = CheckCanGzip();
    if ($ENCODING){
        //print "\n<!-- Use compress $ENCODING  ";
        $Contents = ob_get_contents();
        ob_end_clean();
        if ($debug){
            $s = "<span style=\"color:#dddddd\">Сжатие ".round((100/strlen($Contents)*strlen(gzcompress($Contents, $level))), 0)."%</span>";
            //$Contents .= $s;
            $s = iconv('windows-1251', 'utf-8', $s);
            $Contents = str_replace("</body>", $s."\n</body>",$Contents);
        }
        header("Content-Encoding: $ENCODING");
        print "\x1f\x8b\x08\x00\x00\x00\x00\x00";
        $Size = strlen($Contents);
        $Crc = crc32($Contents);
        $Contents = gzcompress($Contents, $level);
        $Contents = substr($Contents,  0,  strlen($Contents) - 4);
        print $Contents;
        print pack('V', $Crc);
        print pack('V', $Size);
        exit;
    }else{
        ob_end_flush();
        exit;
    }
}
?>