首页 > 编程语言 >php压缩json数据

php压缩json数据

时间:2023-11-21 21:48:25浏览次数:39  
标签:压缩 ob header json encode php data

最近在优化一个页面:ajax请求异步数据,特定情况下,json数据达到100MB左右,仅数据传输时间就需要10-20s左右,简直太慢了。

检索资料看怎么压缩json数据

有效的方法:

ob_start('ob_gzhandler'); //压缩数据
header('Content-Type: application/json');

$data = [];
for ($i = 0; $i < 100000; $i++) {
    $data[] = ['name' => 'aa' . $i, 'age' => random_int(10, 99)];
}

echo json_encode($data);
ob_end_clean();

 

  $.ajax({
    url: "http://localhost:3000/php-demos/test.php", 
    type: "get",
    dataType: "json",
    success: function (data) {
      console.log(data);
    },
    error: function (xhr, err) {
      console.log(xhr, err);
    },
  });

  

 

数据大小虽然变小了,然而时间却增多了。

ini_set('memory_limit', -1);
ini_set('zlib.output_compression_level', 1); //设置压缩级别,默认6
ob_start('ob_gzhandler'); //压缩数据
header('Content-Type: application/json');

$data = [];
for ($i = 0; $i < 5000000; $i++) {
    $data[] = ['name' => 'aa' . $i, 'age' => random_int(10, 99)];
}

echo json_encode($data);

 

 踩过的坑: 

header('Content-Type: application/json');
header('Content-Encoding: gzip');

$data = [];
for ($i = 0; $i < 100000; $i++) {
    $data[] = ['name' => 'aa' . $i, 'age' => random_int(10, 90)];
}

$json = json_encode($data);
$comoressed = base64_encode(gzcompress($json, 9));
echo $json;

 

出现下面的错误

 错误原因应该是发送的数据不是gzip数据

上面压缩处理过的字符串也无法用pako.js解压缩

 

标签:压缩,ob,header,json,encode,php,data
From: https://www.cnblogs.com/caroline2016/p/17847600.html

相关文章

  • 如何在 PHP 中使用 while 循环按 ID 列出节中的数据?
    要在PHP中使用while循环按ID列出数据,您可以按照以下步骤进行操作:创建数据库连接:首先,您需要使用适当的凭据来连接到数据库。您可以使用mysqli或PDO等库来实现数据库连接。$servername="localhost";$username="your_username";$password="your_password";$dbname......
  • 【Python】geopandas 读取 shp/geojson 边界文件
    1.读取shp/geojson边界文件importgeopandasasgpdfile='media/abc.geojson'gdf=gpd.read_file(file)#将GeoDataFrame转换为GeoJSON字符串geojson=json.loads(gdf.to_json())features=geojson['features']2.获取边界文件的网格范围importgeopandas......
  • phpstudy无法启动MySQL服务的解决方案
        MySQL这个服务,一直启动不了,原因是phpstudy里的MySQL服务与本地的MySQL占用的都是3306端口,产生了冲突。   在不想卸载好不容易在本地安装的MySQL服务,那么就可以采用以下办法解决服务冲突:        首先按下win+R执行services.msc进入服务,查找到M......
  • Flask之request.json()和 request.form.get()
    在Flask中,request.json和request.form.get()用于从HTTP请求中获取数据,但它们主要用于不同类型的数据传递方式。request.json:用于从包含JSON数据的请求体中提取数据。适用于POST请求中包含JSON数据的情况,通常是通过AJAX请求或使用Content-Type:application/json标头发......
  • 辨析二维对称矩阵压缩存储
    一、从0开始的二维数组1.如果压缩成上三角,则i,j对换即可。二、从1开始的二维数组2.如果压缩成上三角,则i,j对换即可。三、总结因此做题时一定要,先考虑二维数组与一维数组是从0还是从1开始。再考虑是下三角储存还是上三角存储,因此有四种可能性。根据选项一一排除即......
  • php提前返回数据,后面代码继续执行封装函数
    /*中断并返回数据,后面程序继续执行,避免用户等待(immediate)*可用于返回值后,继续执行程序,但程序占得所以自由没有释放,一致占用,务必注意,最好给单独脚本执行*@paramstring|array$data字符串或数组,数组将被转换成json字符串*@paramintval$set_ti......
  • java to json / json to java使用FastJson对JSON字符串、JSON对象及JavaBean之间的相
    目录1、准备 2、javato json 3、jsontojava1、准备 1、json格式在线查看2.下载 阿里巴巴json 解析库alibaba/fastjson下载最新的jar包并且放在项目libs目录下,addaslib````2、javato json 比如我们想使用java 编写以下json格式数据{   "creatT......
  • 【数据结构】数组和字符串(四):特殊矩阵的压缩存储:稀疏矩阵——三元组表
    4.2.1矩阵的数组表示【数据结构】数组和字符串(一):矩阵的数组表示4.2.2特殊矩阵的压缩存储  矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。但是对于特殊矩阵,如对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等,如果用这种方式存储,会出现大量存储空间存放重复信息或零......
  • 如何在 PHP 中使用 while 循环按 ID 列出节中的数据?
    要在PHP中使用while循环按ID列出数据库中的数据,您需要遵循以下步骤:创建数据库连接:首先,您需要使用适当的凭据来连接到数据库。您可以使用mysqli或PDO等库来实现数据库连接。$dbHost='localhost';$dbUsername='your_username';$dbPassword='your_password';$dbNam......
  • PHP调用java的jar包方法
    制作创建测试的jar包打开idea,文件->新建项目->java模块->选择SDK->项目名称为calcutil在src中新建名为Calc.java,内容如下publicclassCalc{publicstaticintadd(inta,intb){returna+b;}}配置工件:文件->项目结构->工件->添加->jar......