Protocol Buffers
protocol Buffers
2023-09-11 14:14:35 时间
我们知道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://segmentfault.com/a/1190000005065869
相关文章
- TLS Handshake Protocol
- SSH Protocol
- GB28181 sip和RTSP(Real-Time Streaming Protocol)实时流控制协议
- netty系列之:在netty中使用proxy protocol
- 如何在 PHP 中处理 Protocol Buffers 数据
- 解决Navicat连接MySQL时“Client does not support authentication protocol requested by server; consider upgrading MySQL client”的问题
- C++ 程序员 Protocol Buffers 基础指南
- Nginx: proxy_protocol
- TNS-12557: TNS:protocol adapter not loadable TNS-12560: TNS:protocol adapter error
- Java调用ssl异常,javax.net.ssl.SSLHandshakeException: No appropriate protocol
- IOS开发之----协议与委托(Protocol and Delegate) 实例解析
- Why Ambari is setting the security protocol of the kafka to PLAINTEXTSASL instead of SASL_PLAINTEXT?
- Swift: Mixins using Protocol Extensions
- 网络协议之:redis protocol 详解
- 【漏洞修复】TLS protocol中间人攻击漏洞(CVE-2015-4000) 升级ssh
- Java魔法堂:URI、URL(含URL Protocol Handler)和URN
- 解决Navicat连接MySQL出现1251-Client does not support authentication protocol requested by server;
- Protocol buffer序列化及其在微信蓝牙协议中的应用
- Hadoop基于Protocol Buffer的RPC实现代码分析-Server端--转载
- node连接mysql:Client does not support authentication protocol requested by server; consider upgrading