web-dev-qa-db-ja.com

PHPでJSONを圧縮する方法は?

私は、アプリケーションのバグを見つけるのに役立つ小さな分析ページを書いています。本質的には、実際のデータとログエントリを視覚的に比較し、データに対して少し分析を実行することができます。

これはデバッグ専用であり、これをライブサイトに展開するため、サーバーの負荷をできるだけ少なくしたいと思います。分析オプションのいくつかには、かなり重い部分文字列検索またはnが含まれます2 オペレーションなので、これをクライアントにオフロードします。

これは、PHPページがテーブルとログからデータを取得し、その一部をJSONして書き出し、クライアントのJavascriptがすべての分析などを実行することを意味します。

問題は、JSON化されたデータが数MB大きくなり、サーバーへの接続が遅くなることです。なんとかしてデータを圧縮するといいでしょう。誰かアイデアがありますか?

環境はPHP + Apache; mod_gzipがインストールされるかどうかわかりません;そして私はそれを制御できません。

19
Vilx-

PHPの出力コントロール を使用してデータを圧縮できます。スクリプトの先頭で出力の前にこの呼び出しを行うだけです。

ob_start('ob_gzhandler');

これで、出力はgzipまたはdeflateのいずれかで圧縮されます。クライアント。

47
Gumbo

PHP 5.4はJSON_UNESCAPED_UNICODEになっているため、charを置き換えることができます。

\ u00f3->Ĺ› =Ś

eq:

 json_encode($data,JSON_UNESCAPED_UNICODE);
3
user956584

Apacheが選択されている場合(そして、元の質問で述べたように)、. htaccessにいくつかのルールを追加できます。

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