工作中需要用到gRPC,服务端使用python,客户端使用PHP。这里主要讲PHP客户端。分为以下几个部分:安装protoc生成protobuf安装PHP扩展定义客户端安装protoc这里是mac环境的下载地址:https://github.com/protocolbu...解压后进入目录执行./autogen.sh如果报错,需要安装插件brewinstallautomake再执行/autogen.sh./configure--prefix=/usr/local/protobufmake&&makeinstall最后不要忘记配置环境变量vim~/.bash_profileexportPROTOBUF=/usr/local/protobufexportPATH=$PROTOBUF/bin:$PATHsource~/.bash_profile验证protoc--version生成protobuf文件使用服务器的.proto文件,执行protoc--php_out=.lottery.protosyntax="proto3";packagelotteryservice;serviceGreeter{rpclottery(lotteryReq)returns(lotteryRes){}}messagelotteryReq{stringparam=1;}messagelotteryRes{stringdata=1;}将生成以下目录:安装PHP扩展gRPC扩展:http://pecl.php.net/package/gRPCprotobufextension:http://pecl.php.net/package/p...自定义客户端写入composer.json{"name":"grpc-go-php","require":{"grpc/grpc":"^v1.3.0","google/protobuf":"^v3.3.0"},"autoload":{"psr-4":{"GPBMetadata\\":"GPBMetadata/",“彩票服务\\”:“彩票服务/”}}}composerinstall后,会生成如下目录:在Lotteryservice文件夹下,创建lotteryServiceClient.php_simpleRequest('/Greeter/lottery',$argument,['\Lotteryservice\lotteryRes','解码'],$元数据,$选项);}}创建channel文件夹,在channel文件夹下创建channels.php文件,获取client\Grpc\ChannelCredentials::create不安全()]);返回$客户端;}}在项目目录下创建app.php用于测试连接:lotteryService();$lotteryRequest=new\Lotteryservice\lotteryReq();$lotteryRequest->setParam('{"一等奖10名,二等奖20名,三等奖30名,四等奖40名}');$lottery_res=$lotteryClient->lottery($lotteryRequest)->wait();list($reply,$status)=$lottery_res;$data=$reply->getData();变量转储($数据);死;最后执行phpapp.php
