Php html压缩问题

Php html压缩问题,php,Php,我的服务器负载有问题。我检查了我所有的查询和其他东西,但它们都很好。最后我发现问题出在这个函数上 function compress($buffer) { $buffer = str_replace("\t", '', $buffer); return $buffer; } ob_start("ob_gzhandler"); ob_start("compress"); 当我删除该功能时,负载恢复正常 任何关于这个问题的想法 问候 ob_start("ob_gzhan

我的服务器负载有问题。我检查了我所有的查询和其他东西,但它们都很好。最后我发现问题出在这个函数上

  function compress($buffer) {
    $buffer = str_replace("\t", '', $buffer);
    return $buffer;
  }

ob_start("ob_gzhandler");
ob_start("compress"); 
当我删除该功能时,负载恢复正常

任何关于这个问题的想法

问候

ob_start("ob_gzhandler");
此方法依赖于Apache服务器,此外,必须安装并加载mod_gzip模块。在使用压缩时请记住,服务器上的压缩只有在浏览器请求压缩内容时才会激活,如果浏览器不理解压缩内容或不请求压缩内容,服务器只会服务器普通的、未压缩的内容

上面提到的方法快速而简单,但缺点是它只能在带有mod_gzip的Apache上工作。不仅如此,根据Php手册,这不是gzip的首选方法

默认情况下,压缩级别设置为6。更高的压缩级别意味着服务器CPU上的负载更大。您可能希望对这些级别进行实验,以找到一个值,该值将为您提供良好的压缩,从而在服务器上获得可接受的负载量

要更改压缩级别,只需在ob_start(“ob_gzhandler”)之前插入以下行:

还有一件事,如果您使用的是PHPgzip,请记住关闭压缩,如果gzip没有关闭,则有时会导致服务器负载。使用ob_end_Flush将输出刷新到浏览器

ob_end_flush();
建议使用GZip connect:

方法1:

如果您要对所有页面进行压缩,那么我建议使用.htaccess方法,因为它非常容易实现,并且通过.htaccess文件,您可以进一步配置服务器配置。现在要启用gzip压缩,请在.htaccess文件中添加以下行

php_value output_handler ob_gzhandler
方法2:

通过PHP优化方式使用Gzip的正确方法是:

// Include this function on your pages
function print_gzipped_page() {

    global $HTTP_ACCEPT_ENCODING;
    if( headers_sent() ){
        $encoding = false;
    }elseif( strpos($HTTP_ACCEPT_ENCODING, 'x-gzip') !== false ){
        $encoding = 'x-gzip';
    }elseif( strpos($HTTP_ACCEPT_ENCODING,'gzip') !== false ){
        $encoding = 'gzip';
    }else{
        $encoding = false;
    }

    if( $encoding ){
        $contents = ob_get_contents();
        ob_end_clean();
        header('Content-Encoding: '.$encoding);
        print("\x1f\x8b\x08\x00\x00\x00\x00\x00");
        $size = strlen($contents);
        $contents = gzcompress($contents, 9);
        $contents = substr($contents, 0, $size);
        print($contents);
        exit();
    }else{
        ob_end_flush();
        exit();
    }
}

// At the beginning of each page call these two functions
ob_start();
ob_implicit_flush(0);

// Then do everything you want to do on the page
echo 'Hello World';

// Call this function to output everything as gzipped content.
print_gzipped_page();

希望这能解决您的服务器加载问题。

摆脱
compress
功能,它毫无意义。这两个处理程序中的哪一个导致了问题?我也不明白,它应该怎么做?你到底得到了什么错误?Apache{debug,error}.log中有什么东西吗?有没有一些非UTF编码的打字错误?你不是用相同的名字重新定义函数吗?用更多的相关信息更新你的问题。服务器信息、调试日志和任何您可以的信息。
// Include this function on your pages
function print_gzipped_page() {

    global $HTTP_ACCEPT_ENCODING;
    if( headers_sent() ){
        $encoding = false;
    }elseif( strpos($HTTP_ACCEPT_ENCODING, 'x-gzip') !== false ){
        $encoding = 'x-gzip';
    }elseif( strpos($HTTP_ACCEPT_ENCODING,'gzip') !== false ){
        $encoding = 'gzip';
    }else{
        $encoding = false;
    }

    if( $encoding ){
        $contents = ob_get_contents();
        ob_end_clean();
        header('Content-Encoding: '.$encoding);
        print("\x1f\x8b\x08\x00\x00\x00\x00\x00");
        $size = strlen($contents);
        $contents = gzcompress($contents, 9);
        $contents = substr($contents, 0, $size);
        print($contents);
        exit();
    }else{
        ob_end_flush();
        exit();
    }
}

// At the beginning of each page call these two functions
ob_start();
ob_implicit_flush(0);

// Then do everything you want to do on the page
echo 'Hello World';

// Call this function to output everything as gzipped content.
print_gzipped_page();