内容简介:修改php.ini文件 添加以mac为例:参考链接 https://www.jianshu.com/p/f8b789280df4
参考文档列表
- PHP grpc官方文档 https://grpc.io/docs/quickstart/php.html
- PHP grpc官方案例 https://grpc.io/docs/tutorials/basic/php.html
- PHP grpc官方案例之github下载 https://github.com/grpc/grpc/tree/master/examples/php
一.环境搭建
1.安装grpc扩展
pecl install grpc
修改php.ini文件 添加 extension=grpc.so
通过 php -m | grep grpc
查看grpc.so是否安装成功
2.下载protoc命令
以mac为例:参考链接 https://www.jianshu.com/p/f8b789280df4
protoc --version
查看是否安装成功
3.安装PHP GRpc SDK
git clone -b v1.15.0 https://github.com/grpc/grpc
需要grpc-php-plugin来生成proto对应的 php 可执行文件。
cd grpc && git submodule update --init && make grpc_php_plugin
可与将 grpc_php_plugin 命令加入环境变量
二.通过protoc文件生成PHP文件
编写proto文件
syntax = "proto3"; package yunpian; service YunPian { rpc Send(SendSmsReq) returns (SendSmsRes); } message SendSmsReq { string code = 1; } message SendSmsRes { int32 code = 1; string message = 2; map<string, string> data = 3; }
protoc命令生成PHP文件
参考链接: https://www.cnblogs.com/ghj1976/p/5435565.html
protoc --proto_path=examples/protos --php_out=examples/php/route_guide --grpc_out=examples/php/route_guide --plugin=protoc-gen-grpc=bins/opt/grpc_php_plugin ./examples/protos/route_guide.proto
proto_path对应proto文件的位置,php_out指定生成PHP文件的目录,grpc_out和php_out指定相同的目录,plugin对应上面安装的grpc_php_plugin命令路径,最后跟上具体proto的文件地址。
三.PHP客户端调用微服务 例子1
proto文件编辑
syntax = "proto3"; package yunpian; service YunPian { rpc Send(SendSmsReq) returns (SendSmsRes); } message SendSmsReq { string code = 1; } message SendSmsRes { int32 code = 1; string message = 2; map<string, string> data = 3; }
通过protoc命令生成PHP文件
protoc --proto_path=examples/protos --php_out=examples/php/route_guide --grpc_out=examples/php/route_guide --plugin=protoc-gen-grpc=bins/opt/grpc_php_plugin ./examples/protos/route_guide.proto
通过composer安装consule-php-sdk等包
"require": { "grpc/grpc": "^v1.3.0", "google/protobuf": "^v3.3.0", "sensiolabs/consul-php-sdk": "^3.0" },
require dirname(__FILE__).'/../vendor/autoload.php'; define('COORD_FACTOR', 1e7); $serviceFactory = new SensioLabs\Consul\ServiceFactory(); $cl = $serviceFactory->get("catalog"); //采用cataLog的服务方式 $service = $cl->service("yunpian"); //参数传入和服务端约定的服务名 $microServiceData = \GuzzleHttp\json_decode($service->getBody(), true)[0]; //请求微服务的具体地址 $host = $microServiceData["ServiceAddress"]; $port = $microServiceData["ServicePort"]; $client = new Yunpian\YunPianClient($host.":".$port, [ 'credentials' => Grpc\ChannelCredentials::createInsecure(), ]); $reqObj = new Yunpian\SendSmsReq(); //自定义请求 $reqObj->setCode("1234"); list($data, $status) = $client->Send($reqObj)->wait(); var_dump($data->getCode()); var_dump($data->getMessage()); var_dump($data->getData());
源码: go-grpc-getway
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
OpenCV3编程入门
毛星云 / 电子工业出版社 / 2015-2 / 79
OpenCV在计算机视觉领域扮演着重要的角色。作为一个基于开源发行的跨平台计算机视觉库,OpenCV实现了图像处理和计算机视觉方面的很多通用算法。本书以当前最新版本的OpenCV最常用最核心的组件模块为索引,深入浅出地介绍了OpenCV2和OpenCV3中的强大功能、性能,以及新特性。书本配套的OpenCV2和OpenCV3双版本的示例代码包中,含有总计两百多个详细注释的程序源代码与思路说明。读者......一起来看看 《OpenCV3编程入门》 这本书的介绍吧!