php protobuf

本文介绍如何使用 Protobuf 进行数据压缩和传输,包括下载库文件、编写传输规则、生成规则文件、数据压缩与解压的过程。通过示例展示了如何定义自定义数据类型以提高传输效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Protobuf是将传输数据转变成二进制数据格式,这样比json节省50%带宽,但是程序需要每次都对数据的传入和传出做处理,这样就需要程序员在程序效率和带宽之间做平衡。

一、下载 库文件

二、编写 文件传输规则(编写rule.proto)
    规则文件相当于 定义一个 自定义数据类型 (选项、数据类型、参数名、参数位置)
    message Person
   {
          required string name = 1;
          required int32 id = 2;
          optional string email = 3;

          enum PhoneType {
                MOBILE = 0;
                HOME = 1;
                WORK = 2;
          }

            message PhoneNumber {
                required string number = 1;
                optional PhoneType type = 2 [default = HOME];
            }
            repeated PhoneNumber phone = 4;
   }
   选项:    required (必填)、optional (选填)、repeated (可替换)、enum (枚举)
   数据类型:
   参数名:
   参数位置:    在同一个层级下唯一(Person 下只有1、2、3、4  但是都不重复)

三、生成规则文件(运行zip_fri.php 生成 pb_proto_rule.php)
   加载 pb_parser.php 和 rule.php  生成 pb_proto_rule.php

四、压缩(运行zip_sec.php 得到 message.pb)
   1.加载 ../message/pb_message.php 和  pb_proto_rule.php
   2.声明 对象
   3.添加数据
   4.将字符串转化成二进制
   5.保存 数据

五、解压缩(运行unzip.php)
   1.加载../message/pb_message.php 和 pb_proto_rule.php   
   2.接收数据
   3.声明对象
   4.将二进制解析成字符串
   5.取出数据
注意:php 用protobuf 会产生乱码 可以 在 生成二进制文件时先用urlencode 取出数据时用urldecode

      google 提供的 demo 之使用与 php5.2及以下版本(split 在php5.3已经弃用了)可以将 库文件中的split() → preg_split()

      上传文件 https://yunpan.cn/cvvwHQTEuf2t4 (提取码:e311)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值