php使用grpc服务,包含protoc定义的完整流程

本文详细介绍了如何在PHP环境中安装和使用gRPC,包括安装protoc解释器,编译并配置grpc和protobuf扩展,以及编写客户端代码以调用Python编写的微服务。

grpc是通过定义服务端和客户端的代码来实现的通信的。

但是要实现通信,还是要将其方法包装为一个http请求,除非你把grpc的服务端代码放在本地的端口上。

grpc是面对微服务框架而风生水起的,上次我用python编写了一个图神经网络处理的微服务,使用grpc放在我的服务器本地端口上。

现在我希望我的一个php项目也可以调用该服务,现在来试一试吧~

流程

  • php的服务器安装protoc
  • php的服务器安装grpc
  • 编写服务端代码
  • 编写客户端代码

由于服务端(python)的代码已经编写或者说已经部署,就不做叙述了。

安装代码请根据自己的php版本和grpc版本酌情自定义。本人使用的php8.0,grpc1.62.0,protobuf4.62.0

安装protoc解释器

和windows开发一样,使用grpc服务均需要使用protoc解释器,去官方github下的release下载linux版本:
protoc-26.0-linux-x86_64.zip

解压到/usr/bin/目录下

如果你使用宝塔,你也可以直接先在本地电脑上解压,把解压后的bin文件夹里的protoc文件上传到/usr/bin/中就好了。

终端中输入protoc,有返回即为成功

安装grpc

无论你服务器是否安装pecl,可以直接通过http请求安装php相关包,但是必须安装了php(废话)

# 下载解压 grpc
cd ~
wget http://pecl.php.net/get/grpc-1.62.0.tgz
tar xvf grpc-1.62.0.tgz
cd grpc-1.62.0

# 生成配置并编译安装(编译安装时间很长,我大概安装了一小时左右)
/www/server/php/72/bin/phpize
./configure --with-php-config=/www/server/php/72/bin/php-config
make && make install

之后要配置php的拓展

# 配置PHP扩展
cd grpc-1.62.0
echo "extension = grpc.so" >> /www/server/php/80/etc/php.ini
cd protobuf-4.62.0  # 如果没有路径请仿照grpc安装的方式手动安装安装一下,我个人觉得可能并不需要
echo "extension = protobuf.so" >> /www/server/php/80/etc/php.ini

最后重启一下php和nginx服务就大功告成了

编译protoc文件

具体的protoc文件的定义详细见我之前的博客

需要安装protoc和grpc_php_plugin

使用如下代码生成:

protoc --php_out ./ you-file.proto  #需要安装protoc解释器,生成protoc的php定义文件在当前目录(./)
protoc --grpc_out ./ you-file.proto #需要grpc_php_plugin插件安装,生成grpc文件在当前目录

第一行生成你的proto数据定义文件,我生成了GCNResult.php,Node.php,Edge.php</

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值