PHP使用protobuf协议

介于Windows下面protobuf的PHP扩展很难搞定,本文是基于centos6.5_x64

1. 安装

可以使用源码安装https://github.com/google/protobuf/, 也可以使用直接下载二进制文件复制到系统path里面

安装完成后 在命令行执行 protoc -h


ps: protoc 默认支持 --go_out golang版本

2. PHP安装扩展(2017.08.07 如果在项目中引用 https://github.com/google/protobuf/php 则不需要进行安装)

源码目录中 xxxxxx/php/ext/google/protobuf

phpize 

./configure

make 

make install 

在/etc/php.d/中新建  protobuf.ini,并加入以下内容开启扩展

echo extension=protobuf.so > /etc/php.d/protobuf.ini

extension=protobuf.so

3. 根据协议生成php文件

protoc --php_out=out_dir test.proto

4. 使用

将https://github.com/google/protobuf/php下的src引入到工程中,或者使用composer进行管理 

ps: 由于我是手动添加到工程目录, 将descriptor.php文件中的类按namespace的格式分别复制到对应的类中

message.proto

syntax = "proto3";

package protocols.protobuf;

// import "any.proto";

//请求

message Request {

int32    id      = 1; //消息类型ID

int32    code    = 2;

}


$request=new\Protocols\Protobuf\Request();

$request->mergeFromString($data);

var_dump($request->getId());

推荐阅读更多精彩内容