安装grpc的服务
请上grpc官网安装
下面是源码安装步骤
git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc
cd grpc
git submodule update --init
make
sudo make install
安装PHP扩展
确保当前的php安装了grpc
、protobuf
的扩展。
如果没有的话,直接使用命令
pecl install grpc
pecl install protobuf
安装protoc
确保protoc
已经安装
安装grpc_php_plugin (生成php的grpc的服务接口)
检查下刚刚git clone grpc下文件夹下的grpc/bins/opt/grpc_php_plugin
是否有这个文件。
生成相关php代码
protoc --proto_path=/Users/meow/mywebs/nodeService --php_out=./ --grpc_out=./ --plugin=protoc-gen-grpc=/Users/meow/mywebs/node/grpc/bins/opt/grpc_php_plugin /Users/meow/mywebs/nodeService/nodeservice.proto
其中
--proto_path
是proto
文件所在的文件夹
--php_out
生成php的文件文件夹
--grpc_out
grpc的输出文件夹
--plugin
是grpc_php_plugin
文件的目录
此时系统会根据proto
生成相应的php代码,效果如下
然后在新建一个composer.json文件,并把下面的信息输入进去
{
"require": {
"grpc/grpc": "^1.10",
"google/protobuf": "^3.5"
},
"autoload":{
"psr-4":{
"GPBMetadata\\":"GPBMetadata/",
"Nodeservice\\":"Nodeservice/"
}
}
}
然后执行
composer install
然后创建php的client端。
代码如下:
<?php
require_once __DIR__.'/vendor/autoload.php';
$request = new \Nodeservice\Png2SvgRequest();
$request->setImgUrl('https://d30y9cdsu7xlg0.cloudfront.net/png/120046-200.png');
$request->setWidth(300);
$request->setHeight(300);
$client = new \Nodeservice\NodeServiceClient('0.0.0.0:50001', [
'credentials' => Grpc\ChannelCredentials::createInsecure(),
]);
list($reply, $result) = $client->Png2Svg($request)->wait();
var_dump($result);
运行即可。