在使用PHP发送之前压缩JSON对象

时间:2011-06-25 14:17:23

标签: php json zip

我有兴趣将服务器上的JSON对象的文本输出压缩到我请求该对象的移动设备之前。对txt压缩的小测试将使其尺寸减小约80%!这非常适合移动设备! :)

我根本不需要保存我在服务器上创建的zip文件,只需将其保存在内存中,然后将其回显。我可以在android端解压缩没问题。

无论如何,我做了一些操作,但我还没有能够提出任何有用的东西,这是我到目前为止所做的:

while($e=mysql_fetch_assoc($q))
   $output[]=$e;
$zip = new ZipArchive();
$zip->addFromString("test",(json_encode($output)));
echo $zip;

我知道我可能正在做一些大错的事,我对php不是很熟悉。我的$ q是一个包含大量sql行的游标,如果我使用print(json_encode($output));而不是所有的zip shenanigans,它可以正常输出原始文本。

我认为它不一定是拉链压缩,但如果你能指出我正确的方向我可能会弄明白,任何压缩都会有所帮助。谢谢!

2 个答案:

答案 0 :(得分:9)

您可以ob_start使用ob_gzhandler

if(function_exists('ob_gzhandler')) ob_start('ob_gzhandler');
else ob_start();

echo json_encode($output);
ob_end_flush();

答案 1 :(得分:0)

服务器端:创建一个JSON对象,该对象仅包含一个属性,该属性是压缩的JSON对象的字节数组,并将其发送到客户端。 客户端:解压缩对象中包含的字节数组以获取原始JSON数据。 Pro:5X最快的通信服务器 - 客户端,减少服务器的IO工作量。 从服务器需要更多CPU工作。 请你考虑一下:P