О PHP и gz-сжатии - PullRequest
       11

О PHP и gz-сжатии

3 голосов
/ 25 декабря 2011

Я искал gz-сжатие в PHP и нашел этот фрагмент кода:

<?php
function print_gzipped_output()
{
    $HTTP_ACCEPT_ENCODING = $_SERVER["HTTP_ACCEPT_ENCODING"];
    if( headers_sent() )
        $encoding = false;
    else if( strpos($HTTP_ACCEPT_ENCODING, 'x-gzip') !== false )
        $encoding = 'x-gzip';
    else if( strpos($HTTP_ACCEPT_ENCODING,'gzip') !== false )
        $encoding = 'gzip';
    else
        $encoding = false;

   if( $encoding ) {
        $contents = ob_get_clean();
        $_temp1 = strlen($contents);
        if ($_temp1 < 2048)    // no need to waste resources in compressing very little data
            print($contents);
        else
        {
            header('Content-Encoding: '.$encoding);
            print("\x1f\x8b\x08\x00\x00\x00\x00\x00");
            $contents = gzcompress($contents, 9);
            $contents = substr($contents, 0, $_temp1);
            print($contents);
        }
    }
    else
        ob_end_flush();
}
?>

Мой вопрос прост: что значит линия

print("\x1f\x8b\x08\x00\x00\x00\x00\x00");

на самом деле означает?

Заранее спасибо

1 Ответ

3 голосов
/ 25 декабря 2011

Это заголовок для файлов формата gzip. Вы можете просмотреть более подробную информацию здесь .

Первые два байта идентифицируют файл как gzipped. Следующий 8 определяет использование метода сжатия DEFLATE. Последние четыре нулевых байта предназначены для полей, которые не нужны.

...