Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос относительно gzip-сжатия 
V
    Опции темы
Zmiuko
Дата 6.3.2010, 13:15 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Народ, я вам порядочно надоел, но у меня вопрос следующий:

..написал класс обработки контента, последующего сжатия...

Код

<?php
function outcallback($a)
{
 global $layout;
 $layout->arr[] = $a;
 return $a;
}
class layout
{
 var $started = false;
 var $gziplevel = 9;
 var $replaces = array();
 var $arr;
 function layout()
 {
  //@ob_start("outcallback"); 
  @ob_start(); 
  @ob_implicit_flush(0); 
  $this->started = true;
 }
 function getencoding()
 { 
  global $HTTP_ACCEPT_ENCODING;
  if (headers_sent()) {return 0;} 
  if (strpos($HTTP_ACCEPT_ENCODING, ''x-gzip'') != false) {return "x-gzip";}
  if (strpos($HTTP_ACCEPT_ENCODING,''gzip'') != false) {return "gzip";}
  return false; 
 } 
 function out()
 { 
  if ($this->started){
  $ENCODING = $this->getencoding();
  if ($ENCODING)
  { 
   $Contents = ob_get_contents(); 
   @ob_end_clean();
   $len_from = strlen($Contents);
   $len_to = strlen(gzcompress($Contents,$this->gziplevel));
   $times = round($strlen_from / $strlen_to,2);
   $Contents .= "<!-- Use compress ".$ENCODING." from ".$len_from." to ".$len_to." in ".$times." times -->";
   header("Content-Encoding: ".$ENCODING."");
   print "x1fx8bx08x00x00x00x00x00"; 
   $Size = strlen($Contents);
   $Crc = crc32($Contents); 
   $Contents = gzcompress($Contents,$this->level); 
   $Contents = substr($Contents, 0, strlen($Contents) - 4); 
   print $Contents; 
   print pack(''V'',$Crc); 
   print pack(''V'',$Size); 
   exit; 
  }
  else
  { 
   @ob_end_flush();
   echo($Contents); 
//   echo("\r\n\r\n<!-- Can''t use compress  -->");
  }
  }
 }
}
?>


Так вот этот класс идентичен

Код

<?php 

define("GzipCompressionLevel",9); 
if($force_gzip == "yes") {$FORCE_COMPRESSION = true;} else {$FORCE_COMPRESSION = false;}

function gzipCompressionHandler($content) 
{ 
    preg_match_all("{[\w\-]+}",$_SERVER["HTTP_ACCEPT_ENCODING"],$matches); 
    $encoding=false; 
    if(in_array("x-gzip",$matches[0])) $encoding="x-gzip"; 
    if(in_array("gzip",$matches[0])) $encoding="gzip"; 
    if($encoding!==false && function_exists("gzcompress")) { 
      $header="\x1f\x8b\x08\x00\x00\x00\x00\x00"; 
      $compressed=substr(gzcompress($content, GzipCompressionLevel),0,-4); 
      $trailer=pack("V",crc32($content)).pack("V",strlen($content)); 
      $content=$header.$compressed.$trailer; 
      @header("Content-Encoding: $encoding"); 
      @header("Content-Length: ".strlen($content)); 
    } 
  return $content;
} 

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

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

if($support_gzip){
 ob_start("gzipCompressionHandler"); 
 $gzpstatus = "on";
} 
else 
{
 ob_start('');
 $gzpstatus = "off";
}

?>


...так вот класс почему-то не работает, не могу найти ошибку!!!

Уважаемые, натыкайте носом, пожалуйста... укажите где промахнулся.

ЗЫ: За читабельность кода уж сильно не ругайте smile

Заранее спасибо.
PM MAIL WWW ICQ Skype Jabber   Вверх
MoLeX
Дата 6.3.2010, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Код

''x-gzip''


изваращение

Добавлено через 18 секунд
внимательно взгляни. и смотри всегда на ошибки

Добавлено через 4 минуты и 13 секунд
Код

  global $HTTP_ACCEPT_ENCODING;
  if (headers_sent()) {return 0;} 
  if (strpos($HTTP_ACCEPT_ENCODING, ''x-gzip'') != false) {return "x-gzip";}
  if (strpos($HTTP_ACCEPT_ENCODING,''gzip'') != false) {return "gzip";}


зачем тут глобал и вообще такой метод???

Код

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




Код

$Contents .= "<!-- Use compress ".$ENCODING." from ".$len_from." to ".$len_to." in ".$times." times -->";

на
Код

$Contents .= '<!-- Use compress '.$ENCODING.' from '.$len_from.' to '.$len_to.' in '.$times.' times -->";

// или
$Contents .= "<!-- Use compress {$ENCODING} from {$len_from} to {$len_to} in {$times} times -->";




Код

   print pack(''V'',$Crc); 
   print pack(''V'',$Size); 

 smile  smile  smile 

выкинь свой редактор или научись им пользоваться

Добавлено через 5 минут и 7 секунд
и зачем так много кода??? 

Код

if( isset($_SERVER['HTTP_ACCEPT_ENCODING']) AND strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') === FALSE )
    ob_start();
else
    ob_start('ob_gzhandler');



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Zmiuko
Дата 6.3.2010, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Цитата(MoLeX @  6.3.2010,  18:37 Найти цитируемый пост)
   print pack(''V'',$Crc); 
   print pack(''V'',$Size); 

Прошу прощения, это я сюда так написал. "Перековычил" каким-то образом.
Ясно, спасибо.
PM MAIL WWW ICQ Skype Jabber   Вверх
MoLeX
Дата 7.3.2010, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140




M
MoLeX
Модератор: Zmiuko, если вопрос решен то отметь его!



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Zmiuko
Дата 9.3.2010, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Отметил
PM MAIL WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0547 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.