PHP使用protobuf協(xié)議

介于Windows下面protobuf的PHP擴(kuò)展很難搞定,本文是基于centos6.5_x64

1. 安裝

可以使用源碼安裝https://github.com/google/protobuf/, 也可以使用直接下載二進(jìn)制文件復(fù)制到系統(tǒng)path里面

安裝完成后 在命令行執(zhí)行 protoc -h


ps: protoc 默認(rèn)支持 --go_out golang版本

2. PHP安裝擴(kuò)展(2017.08.07 如果在項(xiàng)目中引用 https://github.com/google/protobuf/php 則不需要進(jìn)行安裝)

源碼目錄中 xxxxxx/php/ext/google/protobuf

phpize?

./configure

make?

make install?

在/etc/php.d/中新建 ?protobuf.ini,并加入以下內(nèi)容開啟擴(kuò)展

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

extension=protobuf.so

3. 根據(jù)協(xié)議生成php文件

protoc --php_out=out_dir test.proto

4. 使用

將https://github.com/google/protobuf/php下的src引入到工程中,或者使用composer進(jìn)行管理?

ps: 由于我是手動(dòng)添加到工程目錄, 將descriptor.php文件中的類按namespace的格式分別復(fù)制到對應(yīng)的類中

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());

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容