热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php语言支持grpc协议吗,PHP平台下使用gRPCGo语言中文社区

概念gRPC:基于RPC的一种远程调用协议(php平台只支持gRPC客户端调用,不支持gRPC服务端实现)Protobuf:语言无关的高效

概念

gRPC:基于RPC的一种远程调用协议(php平台只支持gRPC客户端调用,不支持gRPC服务端实现)

Protobuf:语言无关的高效数据交换协议,用于支持gRPC在不同语言间序列化和反序列化数据,具体的数据交换约定由.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文件示例

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文件,导出客户端类

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

调用示例

$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();



推荐阅读
  • linux qt打开常用文件格式,设置Linux Qt文件默认打开方式为QtCreator
    Linux自定义文件打开方式也可参照文本抱歉,本文前段时间写的ubuntu下的Qt工程文件默认打开方式是不好用的,因为其他的文本文件也会受到影响,强迫症患者,每次打开Qt工程都是先 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • (三)多表代码生成的实现方法
    本文介绍了一种实现多表代码生成的方法,使用了java代码和org.jeecg框架中的相关类和接口。通过设置主表配置,可以生成父子表的数据模型。 ... [详细]
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
  • CentOS7.8下编译muduo库找不到Boost库报错的解决方法
    本文介绍了在CentOS7.8下编译muduo库时出现找不到Boost库报错的问题,并提供了解决方法。文章详细介绍了从Github上下载muduo和muduo-tutorial源代码的步骤,并指导如何编译muduo库。最后,作者提供了陈硕老师的Github链接和muduo库的简介。 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • 1.利用node实现页面实时更新,主要 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • node.jsurlsearchparamsAPI哎哎哎 ... [详细]
  • 初始化初始化本地空版本库,仓库,英文名repositorymkdirtest&&cdtestgitinit克隆项目到本地gitclone远程同 ... [详细]
author-avatar
秋夜里的寂寞
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有