在 PHP 中发送之前压缩 JSON 对象

发布于 2024-11-17 01:17:43 字数 585 浏览 0 评论 0原文

我感兴趣的是先压缩服务器上 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 恶作剧,它可以很好地输出原始文本。

我想它不一定是 zip 压缩,但如果你能给我指出正确的方向,任何压缩都会有帮助,我可能会弄清楚。谢谢!

I'm interested in zipping the text output from a JSON object on a server before transporting it to my mobile device that has requested the object. A small test of the txt zipping will reduce its size by about 80%! This is great for mobile! :)

I don't really need to save the zip file i create on the server at all, just have it reside in memory, then echo it out. I can unzip it on the android side no problem.

Anyways, I've done a little manipulation but I haven't been able to come up with anything that works, here's what I have so far:

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

I know im probably doing something massively wrong, im not very familiar with php. My $q is a cursor containing lots of sql rows, and if I use print(json_encode($output)); instead of all the zip shenanigans it works fine to output the raw text.

I suppose it doesnt have to be zip compression, but any compression would be helpful if you could point me in a proper direction I can likely figure it out. Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

神仙妹妹 2024-11-24 01:17:43

您可以将 ob_startob_gzhandler 一起使用:

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

echo json_encode($output);
ob_end_flush();

you can use ob_start with ob_gzhandler:

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

echo json_encode($output);
ob_end_flush();
逆光下的微笑 2024-11-24 01:17:43

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

Server Side:Create a JSON object that contain only a property that is a byte array that is the JSON object zipped and send it to client.
Client Side:Unzip the byte array contained in the object to obtain the original JSON DATA.
Pro:5X Fastest communication Server-Client,less IO work for Server.
Required more CPU work fromServer.
Take your consideration :P

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文