2010-01-10 140 views
16

我正在写一个分析页面,它可以帮助我查找应用程序中的错误。实质上它允许在视觉上比较实际数据和日志条目,并对数据进行一些分析。如何使用PHP压缩JSON?

由于这仅用于调试,并且由于我将在活动网站上进行部署,因此我希望它尽可能减少服务器负载。一些分析选项将包括相当重的子字符串搜索或操作,因此我将把这些分配给客户端。

这意味着PHP页面只会从表和日志中获取数据,将其中的一部分JSON数据写出来。然后客户端Javascript将做所有的分析等。

问题是,JSON的数据将是几个MB大,我的连接到服务器 - 慢。以某种方式压缩数据会很好。任何人有想法?

环境是PHP + Apache;我不知道是否会安装mod_gzip;我无法控制它。

回答

42

您可以使用PHP’s output control压缩数据。只要把这个电话在你的脚本开始任何输出之前:

ob_start('ob_gzhandler'); 

现在,任何输出将与任何的gzip压缩缩小如果客户接受。

+0

修复了ob_start的o_start。 – 2010-01-10 14:58:57

+1

它工作!万岁! :) – 2010-01-10 15:03:09

+2

+1 - 绝对要走的路。但是,请注意,PHP必须使用--with-zlib配置才能正常工作http://us2.php.net/manual/en/zlib.installation.php – 2010-01-10 19:09:49

2

在PHP 5.4现在是JSON_UNESCAPED_UNICODE所以你可以替换字符:

\ u00f3 - > L> = S

EQ:

json_encode($data,JSON_UNESCAPED_UNICODE); 
0

如果Apache是​​你的选择(它是,就像原始问题中提到的那样),您可以在.htaccess中添加一些规则:

<IfModule mod_deflate.c> 
    AddOutputFilterByType DEFLATE text/html 
    # Add any mime-type you think is appropriate here 
    AddOutputFilterByType DEFLATE application/json 
</IfModule>