php使用protobuf扩展的问题

sinat_31844963 2015-10-08 02:54:51
尝试用protobuf将php与服务器进行通信,扩展的安装与使用都没有问题。
但是在传输比较长的字符串的时候有问题,具体表现:
服务器将pb数据转为字符串传输回php,当一段字符串长度大于1500字节的时候(这是我估计的值)的时候,php解析时偶尔报错
错误如下:

exception 'Exception' with message ': parse error - "'response' field wire type is varint but should be length-delimited"'

这个问题并不会每次都出现,所以搞的很烦。关于那个varint跟length-delimited我查了下谷歌的官方资料

https://developers.google.com/protocol-buffers/docs/encoding#types
就是在进行字符串化时的不同格式,按道理讲不需要用户去设置的。。
不知道哪位大神有研究过这个东西的。。
...全文
694 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
楼主是如何解决的,同样遇到问题 $response->parseFromString(substr($content, $len)); 为何php解析的时候一定要截断一部分,这个$len是如何得到的?能否完全解析?
mysql_data 2018-07-12
  • 打赏
  • 举报
回复
我尝试安装在windows php 环境下安装pd,怎么也不成功。哥能给个详细安装教程吗?在线等。最近搞游戏用到数据通信
sinat_31844963 2015-10-08
  • 打赏
  • 举报
回复
大致发现了问题所在,我在php中进行数据获取是用的socket_read() 在出问题的时候这个获取的数据长度就比不出问题的时候小,而且一大一小两个长度都是固定的

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧