63 lines
1.6 KiB
PHP
63 lines
1.6 KiB
PHP
<?php
|
|
if(!defined('DATALIFEENGINE'))
|
|
{
|
|
die("Hacking attempt!");
|
|
}
|
|
|
|
function CheckCanGzip(){
|
|
|
|
if (headers_sent() || connection_aborted() || !function_exists('ob_gzhandler') || ini_get('zlib.output_compression')) return 0;
|
|
|
|
if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'x-gzip') !== false) return "x-gzip";
|
|
if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) return "gzip";
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
function GzipOut($debug=0){
|
|
global $config, $Timer, $db, $tpl, $_DOCUMENT_DATE;
|
|
|
|
$s = "
|
|
<!-- Âðåìÿ âûïîëíåíèÿ ñêðèïòà ".$Timer->stop()." ñåêóíä -->
|
|
<!-- Âðåìÿ çàòðà÷åííîå íà êîìïèëÿöèþ øàáëîíîâ ".round($tpl->template_parse_time, 5)." ñåêóíä -->
|
|
<!-- Âðåìÿ çàòðà÷åííîå íà âûïîëíåíèå MySQL çàïðîñîâ: ".round($db->MySQL_time_taken, 5)." ñåêóíä -->
|
|
<!-- Îáùåå êîëè÷åñòâî MySQL çàïðîñîâ ".$db->query_num." -->";
|
|
|
|
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;
|
|
|
|
}
|
|
}
|
|
?>
|