function GzipOut($debug = 0) { global $config, $Timer, $db, $tpl, $_DOCUMENT_DATE; if ($debug) { $s = "\r\n<!-- Время выполнения скрипта " . $Timer->stop() . " секунд -->\r\n<!-- Время затраченное на компиляцию шаблонов " . round($tpl->template_parse_time, 5) . " секунд -->\r\n<!-- Время затраченное на выполнение MySQL запросов: " . round($db->MySQL_time_taken, 5) . " секунд -->\r\n<!-- Общее количество MySQL запросов " . $db->query_num . " -->"; } if ($debug and function_exists("memory_get_peak_usage")) { $s .= "\n<!-- Затрачено оперативной памяти " . round(memory_get_peak_usage() / (1024 * 1024), 2) . " MB -->"; } if ($_DOCUMENT_DATE) { @header("Last-Modified: " . date('r', $_DOCUMENT_DATE) . " GMT"); } if ($config['allow_gzip'] != "yes") { if ($debug) { echo $s; } ob_end_flush(); return; } $ENCODING = CheckCanGzip(); if ($ENCODING) { $s .= "\n<!-- Для вывода использовалось сжатие {$ENCODING} -->\n"; $Contents = ob_get_contents(); ob_end_clean(); if ($debug) { $s .= "<!-- Общий размер файла: " . strlen($Contents) . " байт "; $s .= "После сжатия: " . strlen(gzencode($Contents, 1, FORCE_GZIP)) . " байт -->"; $Contents .= $s; } header("Content-Encoding: {$ENCODING}"); $Contents = gzencode($Contents, 1, FORCE_GZIP); echo $Contents; exit; } else { ob_end_flush(); exit; } }
function GzipOut() { $ENCODING = CheckCanGzip(); if ($ENCODING) { $Contents = ob_get_contents(); ob_end_clean(); header("Content-Encoding: {$ENCODING}"); $Contents = gzencode($Contents, 1, FORCE_GZIP); echo $Contents; exit; } else { // ob_end_flush(); exit; } }
function GzDocOut($level = 9, $debug = 0) { $ENCODING = CheckCanGzip(); if ($ENCODING) { $Contents = ob_get_contents(); ob_end_clean(); $s = "\n<!-- Koriandol compress module : {$ENCODING} (" . strlen($Contents) . "/" . strlen(gzcompress($Contents, $level)) . ") -->\n"; $Contents .= $s; header("Content-Encoding: {$ENCODING}"); print "‹"; $Size = strlen($Contents); $Crc = crc32($Contents); $Contents = gzcompress($Contents, $level); $Contents = substr($Contents, 0, strlen($Contents) - 4); print $Contents; print pack('V', $Crc); print pack('V', $Size); exit; } else { ob_end_flush(); exit; } }