安装
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啦
下面我们来安装Protocwget 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();
}
配置好相关路由 调用下看看结果如何。