资讯专栏INFORMATION COLUMN

gRPC的PHP客户端

suosuopuo / 612人阅读

摘要:工作中需要使用,服务端采用的,客户端采用。这里主要讲述客户端。

工作中需要使用gRPC,服务端采用的python,客户端采用PHP。这里主要讲述PHP客户端。

分为以下几个部分:

安装protoc

生成protobuf

安装PHP扩展

定义客户端

安装protoc

这里是mac环境

下载地址:https://github.com/protocolbu...

解压之后进入目录,执行./autogen.sh

如果报错的话需要安装插件brew install automake

再次执行./autogen.sh

./configure --prefix=/usr/local/protobuf

make && make install

最后不要忘记配置环境变量

vim ~/.bash_profile
export PROTOBUF=/usr/local/protobuf
export PATH=$PROTOBUF/bin:$PATH
source ~/.bash_profile

验证

protoc --version
生成protobuf文件

使用服务端的.proto文件,执行protoc --php_out=. lottery.proto

syntax = "proto3";
package lotteryservice;
service Greeter {
    rpc lottery(lotteryReq) returns (lotteryRes){}
}

message lotteryReq {
    string param = 1;
}

message lotteryRes {
    string data = 1;
}

会生成如下目录:

安装PHP扩展

gRPC扩展: http://pecl.php.net/package/gRPC
protobuf扩展: 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/",
      "Lotteryservice":"Lotteryservice/"
    }
  }
}

composer install 之后会生成如下目录:

在Lotteryservice文件夹中,创建lotteryServiceClient.php

_simpleRequest("/Greeter/lottery",
            $argument,
            ["LotteryservicelotteryRes", "decode"],
            $metadata, $options);
    }

}

创建channel文件夹,在channel文件夹下创建 channels.php文件,获取client

 GrpcChannelCredentials::createInsecure()
        ]);

        return $client;
    }

}

在项目目录下创建app.php,用于测试连接:

lotteryService();

$lotteryRequest = new LotteryservicelotteryReq();

$lotteryRequest->setParam("{"一等奖": 10,"二等奖":20,"三等奖":30,"四等奖":40}");

$lottery_res = $lotteryClient->lottery($lotteryRequest)->wait();

list($reply, $status) = $lottery_res;
$data = $reply->getData();
var_dump($data);die;

最后执行php app.php

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31624.html

相关文章

  • grpc - 使用 golang 带你从头撸一套 RPC 服务(二)

    摘要:紧接上一篇,下面用作为客户端调用的服务端。安装插件插件可以帮助我们自动生成客户端封装了的服务接口,方便我们直接引入调用,否则只生成服务请求响应的实体类,用起来不太方便。打包解包客户端发送至服务端服务端接收数据后使用对应的实体解包服务端 紧接上一篇,下面用PHP作为客户端调用Go的服务端。 安装 grpc_php_plugin 插件 grpc_php_plugin插件可以帮助我们自动生成...

    raise_yang 评论0 收藏0
  • 带入gRPCgRPC及相关介绍

    摘要:带入及相关介绍原文地址带入及相关介绍项目地址作为开篇章,将会介绍相关的一些知识。 带入gRPC:gRPC及相关介绍 原文地址:带入gRPC:gRPC及相关介绍 项目地址:go-grpc-example 作为开篇章,将会介绍 gRPC 相关的一些知识。简单来讲 gRPC 是一个 基于 HTTP/2 协议设计的 RPC 框架,它采用了 Protobuf 作为 IDL 你是否有过疑惑,它们都...

    AJie 评论0 收藏0
  • 带入gRPCgRPC及相关介绍

    摘要:原文地址带入及相关介绍项目地址作为开篇章,将会介绍相关的一些知识。 原文地址:带入gRPC:gRPC及相关介绍 项目地址:go-grpc-example 作为开篇章,将会介绍 gRPC 相关的一些知识。简单来讲 gRPC 是一个 基于 HTTP/2 协议设计的 RPC 框架,它采用了 Protobuf 作为 IDL 你是否有过疑惑,它们都是些什么?本文将会介绍一些常用的知识和概念,更详...

    y1chuan 评论0 收藏0
  • 从实践到原理,带你参透 gRPC

    摘要:原文地址从实践到原理,带你参透在语言中大放异彩,越来越多的小伙伴在使用,最近也在公司安利了一波,希望能通过这篇文章能带你一览的爱与恨。帧的主要作用是装填主体信息,是数据帧。 showImg(https://segmentfault.com/img/remote/1460000019552245); 原文地址:从实践到原理,带你参透 gRPC gRPC 在 Go 语言中大放异彩,越来越多...

    geekidentity 评论0 收藏0
  • Python gRPC 入门

    摘要:消息格式有三个字段,在消息中承载的数据分别对应于每一个字段。所以应该为那些频繁出现的消息元素保留之内的标识号。示例编译这里我们用编译一下,看得到什么文件名使用以下命令编译生成了两个文件此文件包含生成的和类。 gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。 本文通过一个简单的 Hello World 例子来向您介绍 gRPC 。 gR...

    ideaa 评论0 收藏0

发表评论

0条评论

suosuopuo

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<