资讯专栏INFORMATION COLUMN

如何在PHP中处理Protocol Buffers数据

ivyzhang / 1355人阅读

摘要:我们知道是定义的一种跨语言跨平台可扩展的数据传输及存储的协议,因为将字段协议分别放在传输两端,传输数据中只包含数据本身,不需要包含字段说明,所以传输数据量小,解析效率高。官方只支持,如果想在中使用,需要借助于第三方的扩展,使用方法如下。

我们知道Protocol Buffers是Google定义的一种跨语言、跨平台、可扩展的数据传输及存储的协议,因为将字段协议分别放在传输两端,传输数据中只包含数据本身,不需要包含字段说明,所以传输数据量小,解析效率高。感兴趣的可以访问https://developers.google.com/protocol-buffers/docs/overview。Protocol Buffers官方只支持C++, Java, Python, C#, Go,如果想在PHP中使用Protocol Buffers,需要借助于第三方的扩展,使用方法如下。

安装protoc编译器

第一步,安装Google的protoc编译器,这个工具可以把proto文件中定义的Message转换为各种编程语言中的类。下载release版本直接编译安装。

tar -xvzf protobuf-2.5.0.tar.gz
cd protobuf-2.5.0
./configure --prefix=/usr/local/protobuf
make && make install

下载地址

安装PHP Plugin

第二步,安装protoc的PHP plugin,需要使用composer安装,感兴趣的可以访问http://www.phpcomposer.com
这个插件可以将proto文件转换到PHP文件,在PHP应用中引用后,可以将二进制格式的Protocol Buffers数据转换为PHP的对象

unzip protoc-gen-php-master.zip
cd protoc-gen-php-master
curl -sS https://getcomposer.org/installer | php
php composer.phar install
/usr/local/protobuf/bin/protoc --plugin=bin/protoc-gen-php --php_out=php_kingso -I. kingso.proto

下载地址

安装php-protocolbuffers

第三步,安装php-protocolbuffers,这是一个PHP扩展,在第二步中已经完成了proto文件到PHP文件的转换,但是对PHP对象的各种操作还需要这个扩展中的API方法

phpize
./configure
make && make install

然后在你的php.ini配置文件中添加

extension = "protocolbuffers.so"

下载地址

编写代码

第四步,借助上面提到的扩展的各种API方法,可以简单地get出自己需要的字段完成后续工作

require "....../kingso.proto.php"
$ks_result = KSResult::parseFromString($kingso_res);
$ks_result->get("xxx_name");

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21545.html

相关文章

  • php使用protobuffer

    摘要:简介是谷歌出品的跨平台跨语言可扩展的数据传输及存储的协议,是高效的数据压缩编码方式之一。相比于来说,更加小巧,更加快速,更加简单。此外,由于其在内网高效的数据交换效率,是被广泛应用于微服务的,在谷歌的开源框架即是基于此构建起来的。 Protobuf 简介 protobuf(Protocol buffers)是谷歌出品的跨平台、跨语言、可扩展的数据传输及存储的协议,是高效的数据压缩编码方...

    biaoxiaoduan 评论0 收藏0
  • Protocol Buffers学习笔记

    摘要:学习笔记简介是发明的一种数据交换格式,独立于语言,独立于平台。此包可以对消息进行序列化和反序列化。端已经接收到消息。至此中使用的实例就完成了。参考官方文档中使用 Protocol Buffers学习笔记 1. 简介 Protocol Buffers是google发明的一种数据交换格式,独立于语言,独立于平台。与其他的数据交换格式有所不同,Protocol Buffers是一种二进制的格...

    habren 评论0 收藏0
  • Nginx 站点配置文件 for Laravel 5 (参考)

    user nginx; worker_processes auto; pid /run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; ...

    missonce 评论0 收藏0
  • 基于http协议使用protobuf进行前后端交互

    摘要:呵呵呵打印出来的是二进制流需要进行化然后给前端。不然的话浏览器会自动解析成文字的前端需要进行接受二进制流先引入文件以及插件前端用请求的路由,在回调函数里的为后端的返回值。 protobuf介绍 由于网上关于protobuf的交互的资料比较零散,所以自己整理了一下关于protobuf前后端交互的资料,以作参考。 Google Protocol Buffers 简称 Protobuf,它提...

    hersion 评论0 收藏0

发表评论

0条评论

ivyzhang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<