Народ, я вам порядочно надоел, но у меня вопрос следующий:
..написал класс обработки контента, последующего сжатия...
| Код | <?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"; }
?>
|
...так вот класс почему-то не работает, не могу найти ошибку!!!
Уважаемые, натыкайте носом, пожалуйста... укажите где промахнулся.
ЗЫ: За читабельность кода уж сильно не ругайте 
Заранее спасибо. |