Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Extensions > Как изпользовать gzip на веб сервере


Автор: mr.fox 25.12.2005, 02:47
а вот форумы используют gzip, как они используют??

Автор: fara 26.12.2005, 14:09
mr.fox
да используют.
я точно знаю что phpBB использует.

Автор: mr.fox 26.12.2005, 15:38
Цитата(fara @ 26.12.2005, 14:09)
да используют.

я и сам знаю что используеться...
я вот только спрашиваю, как это реализованно

Автор: Mal Hack 26.12.2005, 17:09
Вот пример из ИБФ.
Код

        if ($ibforums->vars['disable_gzip'] != 1 )
        {
                $buffer = ob_get_contents();
                ob_end_clean();
                @ob_start('ob_gzhandler');
                print $buffer;
        }

ИМХО, самый рациональный скриптовый вариант.

Автор: wsr 6.1.2006, 23:28
Я лично использую слдующий вариант!
Код

            Header ( "Content-Encoding: gzip" );
            print gzencode ( $content, 9 );


9 - степень сжатия! 0-без сжатия!
Еще желательно узнать поддерживает ли браузер пользователя сжатие!
Код

(@strstr($_SERVER["HTTP_ACCEPT_ENCODING"], "gzip") !== false) and (extension_loaded("zlib")) )

Удачи!

Автор: Guest 15.1.2006, 15:23
Не работает у меня твой варант, а вот этот пашет:

Код

if ($_SERVER['SERVER_PROTOCOL'] == "HTTP/1.1") {
    echo "GZIP <font color=\"green\">ON</font>";
} else {
    echo "GZIP <font color=\"red\">OFF</font>";
}

Автор: wsr 15.1.2006, 21:25
Цитата(Guest @ 15.1.2006, 15:23)
Не работает у меня твой варант, а вот этот пашет:

Код

if ($_SERVER['SERVER_PROTOCOL'] == "HTTP/1.1") {
    echo "GZIP <font color=\"green\">ON</font>";
} else {
    echo "GZIP <font color=\"red\">OFF</font>";
}

А по моему тут тупость написана! нам же нужно реально узнать поддерживает ли браузер пользователя сжатие или нет!

Автор: CTAPbIuMABP 20.2.2006, 17:00
Код

Header ( "Content-Encoding: gzip" );
print gzencode ( $content, 9 );


ИМХО не рационально, при соотношении "цена vs качество" наилучшей будет степерь сжатия 7

Автор: wsr 20.2.2006, 23:21
Цитата(CTAPbIuMABP @ 20.2.2006, 17:00)
Код

Header ( "Content-Encoding: gzip" );
print gzencode ( $content, 9 );


ИМХО не рационально, при соотношении "цена vs качество" наилучшей будет степерь сжатия 7

Прочитай мой пост повнимательнее! Я не рекомендовал использовать такую степень сжатия. Я всего лишь привел пример.
И вообще, по проводимым мной тестам наилучший вариант как раз по соотношению "степень сжатия VS время" является 3-4 степень сжатия!

Автор: CTAPbIuMABP 21.2.2006, 12:33
Цитата

И вообще, по проводимым мной тестам наилучший вариант как раз по соотношению "степень сжатия VS время" является 3-4 степень сжатия!


Может это от сервера зависит?!...

Автор: mr.fox 24.2.2006, 04:07
CTAPbIuMABP, ты нам глаза на жизнь открыл smile

Автор: OverClocker 30.1.2007, 12:26
Перепробовал все ваши варианты, но ничего не получилось. Либо возникает gzip-текст (если без заголовка "Content Encoding: gzip"), либо пустой экран. Я понимаю все функции, выполняющиеся при данной операции, но не понимаю, почему не работает:
содержимое начала файла:
Код

header("Content-Encoding: gzip"); // устанавливаем заголовок
extract($_POST);
extract($_GET);
ob_start(); // начинаем старт накопления буфера

... <какой-то текст>



Теперь конец файла:


Код

$buffer = ob_get_contents(); // выводим всё содержимое буфера в буферную переменную
ob_end_clean(); // очищаем буфер
ob_end_flush(); // очищаем буфер и выплёвываем его содержимое в stdout (вроде в данном случае не нужно)
ob_start(); // стартуем буфер заново (это вроде бы тоже не надо)
print gzencode($buffer, 4); // компрессируем буфер в gzip и выводим его на экран
ob_end_flush(); // очищаем буфер (вроде бы тоже не нужно)

Выдаётся белый экран при выполнении данного кода. Если же не ставить заголовок, то выведется компресированные данные на экран. Броузер поддерживает gzip, т.к. я вижу, что он ставит заголовок "Accept-Encoding: gzip,deflate". В чём ещё может быть проблема? smile

Автор: -=Ustas=- 31.1.2007, 12:26
http://phpclub.ru/faq/wakka.php?wakka=arch/archfaq/archfaq1

Автор: OverClocker 31.1.2007, 13:16
Что такое ob_implicit_flush(0)? Навернео проблема была в этом

За ссылку спасибо! smile

Автор: OverClocker 31.1.2007, 13:35
Не работает ни один вариант... smile

Автор: OverClocker 31.1.2007, 15:15
Всё запахало. Трабла была в том, что получался смешанный текст: и компрессированный и обычный.

Теперь другой вопрос: я хочу выдать на экран размер сжатого файла. Ведь компрессированный и обычный текст мешать нельзя! Неужели два раза компрессировать?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)