2010-01-10 142 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>