Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > не работает ob_gzhandler


Автор: mogul82 1.12.2009, 15:41
Для него что нужно расширение какое нить?

http://phpclub.ru/faq/arch/archfaq/archfaq1?show_comments=1 - вот перепробывал все варианты от туда. Но ни один браузер не работает либо абро-кадабку принимает. 
Заголовки о сжатие посылаю.

Что ни так делаю?

Автор: MoLeX 2.12.2009, 06:50
mogul82, ты лучше покажи код где это используешь

Автор: mogul82 2.12.2009, 13:59
Да нигде просто хотел проверить как это работает. 
Простой файл:

Код

<?php

ob_start("ob_gzhandler");

?>
<html>
<body>
<p>Здесь должна быть компрессируемая страничка.</p>
</html>
<body>



Или так:

Код

<?php

    header('Content-Encoding: gzip');

    ob_start();
    ob_implicit_flush(0);
?>

<html>
<head>
  <title>Заголовок страницы</title>
</head>
<body>

<?php
    echo "Это компрессия. Проверить можно убрав вывод заголовка 'Content-Encoding: gzip'.";
?>

</body>
</html>

<?php
    $gzip_contents = ob_get_contents();
    ob_end_clean();

    $gzip_size = strlen($gzip_contents);
    $gzip_crc = crc32($gzip_contents);

    $gzip_contents = gzcompress($gzip_contents, 9);
    $gzip_contents = substr($gzip_contents, 0, strlen($gzip_contents) - 4);

    echo "\x1f\x8b\x08\x00\x00\x00\x00\x00";
    echo $gzip_contents;
    echo pack('V', $gzip_crc);
    echo pack('V', $gzip_size); 
?>



Есче такой скрипт нашел:


Код

<?php 
// gzip.php v1.2 - read http://rm.pp.ru/?1.phpgzip 
// released on 2004-05-06, by Roman Mamedov<roman at rm.pp.ru> 
// license: do with this code whatever you want. 

///// Configuration ////////////////// 
$PREFER_DEFLATE = false; // prefer deflate over gzip when both are supported 
$FORCE_COMPRESSION = false; // force compression even when client does not report support 
////////////////////////////////////// 

function compress_output_gzip($output) { 
   return gzencode($output); 
} 

function compress_output_deflate($output) { 
   return gzdeflate($output, 9); 
} 

if(isset($_SERVER['HTTP_ACCEPT_ENCODING'])) 
   $AE = $_SERVER['HTTP_ACCEPT_ENCODING']; 
else 
   $AE = $_SERVER['HTTP_TE']; 

$support_gzip = (strpos($AE, 'gzip') !== FALSE) || $FORCE_COMPRESSION; 
$support_deflate = (strpos($AE, 'deflate') !== FALSE) || $FORCE_COMPRESSION; 

if($support_gzip && $support_deflate) { 
   $support_deflate = $PREFER_DEFLATE; 
} 

if ($support_deflate) { 
   header("Content-Encoding: deflate"); 
   ob_start("compress_output_deflate"); 
} else{ 
   if($support_gzip){ 
       header("Content-Encoding: gzip"); 
       ob_start("compress_output_gzip"); 
   } else { 
       ob_start(); 
   } 
}
// Дальше вывод 
?>



И есче около 5и вариантов.
Пробовал добавить ob_flush и есче какие то.  Браузеры говорят что могут работать с gzip-пом. Тыщю раз переделывал, че только ни менял но ни хочет работать.
А вот если через zlib.output_compression - то все работатет.

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