.proto
文件定义sudo yum -y install unzip libtool git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc cd grpc git pull --recurse-submodules && git submodule update --init --recursive make & sudo make install # 编译导出文件中,经常使用的有: # grpc/bins/opt/protobuf/protoc:proto文件编译器 # grpc/bins/opt下生成了各种语言的gRPC编译插件,用于配合protoc编译器生成客户端基类 sudo pecl install grpc sudo pecl install protobuf composer require grpc/grpc --profile --prefer-dist --optimize-autoloader composer require google/protobuf --profile --prefer-dist --optimize-autoloader
proto文件示例php
syntax = "proto3"; package grpc.services.list; #默认包路径 //针对不一样语言自定义包路径 option php_package = "com.service.grpc"; //服务 service ListService { //方法定义 rpc FetchListByUid(ListRequest) returns (ListResponse) {}; } //请求 message ListRequest { string uid = 1; } //响应 message ListResponse { string result = 1; }
编译proto文件,导出客户端类git
protoc --php_out=src/generated_code/grpc \ --grpc_out=src/generated_code/grpc \ --plugin=protoc-gen-grpc=bins/opt/grpc_php_plugin \ path/your.proto
调用示例github
$request = (new ListRequest())->setUid($id); $client = new ListServiceClient("gRPC主机:端口", [ 'credentials' => ChannelCredentials::createInsecure(), 'timeout' => 1000000, ]); list($reply, $status) = $client->FetchListByUid($request)->wait(); $reply->getXxx(); $client->close();