安装
1.1 安装PHP请自行处理protobuf安装
2.1 php protobuf扩展安装
请检查PHP是否安装这些扩展,如果没安装 请安装
sudo apt-get install -y php-pear php5-dev autoconf automake libtool make gcc
我们选择使用php pecl 安装该扩展
sudo pecl install protobuf
查看下php.ini的位置
php --ini
然后把 extension="protobuf.so"加到配置文件,重启php-fpm即可
查看是否安装成功
php -m | grep protobuf
如果上面这些操作成功,PHP已经可以使用编译好的protobuf啦
下面我们来安装Protoc
下载地址:https://github.com/protocolbuffers/protobuf/releases (一般选择最新版本)
执行下载
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protoc-3.9.1-linux-x86_64.zip
解压,安装
unzip protoc-3.9.1-linux-x86_64.zip
cd protoc-3.9.1
ln bin/protoc /usr/bin/proto
查看protoc版本号
protoc --version
编写一个protobuf文件(不再举例,自行编辑)
生成php-protobuf文件
protoc --php_out=out_dir 编辑成功的文件名.proto
成功后会生成两个文件 分别为 GPBMetadata,编辑protobuf文件的package目录文件
使用composer来把文件引入,安装protobuf解析库,开始使用。
简单阐述下 在laravel中使用
在框架中 可以执行
protoc --php_out="protobuf/compile" "protobuf/comment.proto"
(第一个路径为 生成文件的位置,二个为操作文件的位置)
然后执行composer安装laravel中解析protobuf的相关库
composer require "google/protobuf"
然后再composer.json文件中配置如下:
"autoload": { "psr-4": { "App\\": "app/", "Protoc\\": "protobuf/compile/Protoc",//生成到的位置 "GPBMetadata\\": "protobuf/compile/GPBMetadata" } }
在控制器中使用
use Protoc\Comment;//引入生成的文件 public function testSendProtobuf() { $from = new Comment(); $from->setId(1); $from->setText('Hello World!'); $from->setCreatedAt(date('Y-m-d h:i:s', time())); $packed = $from->serializeToString(); return $packed; } public function testReceiveProtobuf(Request $request) { $parsedComment= new Comment(); $parsedComment->mergeFromString($request->getContent()); return $parsedComment->getId(); }
配置好相关路由 调用下看看结果如何。