Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   GZip сжатие. (https://forum.antichat.xyz/showthread.php?t=66447)

[x26]VOLAND 05.04.2008 03:15

GZip сжатие.
 
Реализация GZip сжатия. Новичкам может помочь.

PHP код:

function Gzip($debug=0$level=9) {

    function 
GzipEnc() {
        if (
headers_sent() || connection_aborted())
        {
            return 
0
        }
        if (
strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'x-gzip') !== false) return "x-gzip"
        if (
strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) return "gzip";
        return 
0
    }

    
header("Last-Modified: " date('r'time()-60*60*10) ." GMT");
    if (
config('gzip') != 1)
    {
        if (
$debug) echo $sob_end_flush(); return;
    }

    
$enc GzipEnc();
    if (
$enc)
    {
        
$s "\n<!-- Для вывода использовалось сжатие $enc -->\n"
        
$Contents ob_get_contents();
        
ob_end_clean(); 
        if (
$debug)
        {
            
$s .= "<!-- Общий размер файла: ".strlen($Contents)." байт ";
            
$s .= "После сжатия: ".strlen(gzcompress($Contents$level))." байт -->";
            
$Contents .= $s;
        }
        
header("Content-Encoding: $enc");
        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);
        die();
    }
    else
    {
        
ob_end_flush();
        die();
    }


В конец скрипта ставим:
PHP код:

Gzip(true); 


DIAgen 05.04.2008 12:38

Где то я уже видел эту реализацию, даже припоминаю ;) DLE cms


Время: 16:55