Php 如何读取协议缓冲区分隔的I/O函数

Php 如何读取协议缓冲区分隔的I/O函数,php,protocol-buffers,Php,Protocol Buffers,我试图读取包含长度分隔的协议缓冲区消息的文件,每个记录都是一个变量,指定消息的长度,然后是protobuf消息本身。 但是默认情况下没有办法做到这一点(我可以看到)。 我使用google/Protobuf3.6.1库 但是,版本2.1.0中的Java API收到了一组“分隔”的I/O函数,这些函数显然完成了这项工作: 从解析 合并从 有PHP等价物吗?所以我可以用PHP解析这些消息? 否使用mergeFromString方法时我收到此错误 “分析过程中出错:意外的导线类型。”我尚未测试,但根据来

我试图读取包含长度分隔的协议缓冲区消息的文件,每个记录都是一个变量,指定消息的长度,然后是protobuf消息本身。 但是默认情况下没有办法做到这一点(我可以看到)。 我使用google/Protobuf3.6.1库

但是,版本2.1.0中的Java API收到了一组“分隔”的I/O函数,这些函数显然完成了这项工作: 从解析 合并从

有PHP等价物吗?所以我可以用PHP解析这些消息? 否使用mergeFromString方法时我收到此错误

“分析过程中出错:意外的导线类型。”

我尚未测试,但根据来源,这可能会起作用:

 $data = /* Length-prefixed protobuf data in string */;
 $input = new CodedInputStream($data);

 /* Read length prefix */
 $length = 0;
 $input->readVarint32($length);

 /* Limit the stream so that only $length bytes get parsed */
 $input->pushLimit($length);

 /* Parse the message */
 $msg = new MyMessage();
 $msg->parseFromStream($input);