hyperf3搭建grpc demo

搭建环境如果是linux因为默认版本的gcc是4.8.5编译安装grpc失败,必须升级gcc的版本可以参考php 安装 grpc 扩展》。

gcc重新编译比较耗时所以还是比较建议用docker

Dockerfile

FROM php:8.1

# 安装必要的工具和依赖
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        git \
        libssl-dev \
        zlib1g-dev \
        libzip-dev \
        autotools-dev \
        automake \
        libtool \
        protobuf-compiler \
        cmake \
        vim \
        net-tools \
        zip \
        unzip \
        php-zip \
    && rm -rf /var/lib/apt/lists/*

# 安装 Swoole、Redis、grpc 扩展,将多个RUN合成一个,减少镜像的大小
RUN pecl install swoole && docker-php-ext-enable swoole \
    && echo "swoole.use_shortname='Off'" >> /usr/local/etc/php/conf.d/docker-php-ext-swoole.ini \
    && pecl install redis && docker-php-ext-enable redis && docker-php-ext-install pcntl \
    && pecl install grpc && docker-php-ext-enable grpc \
    && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
    && docker-php-ext-enable grpc \
    && echo 'grpc.enable_fork_support=1' >> /usr/local/etc/php/conf.d/docker-php-ext-grpc.ini \
    && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

# 设置工作目录
WORKDIR /var/www/html

# 暴露端口
EXPOSE 9501

  

# 构建镜像
docker build -t env-grpc .
# 运行容器
docker run -it -p 9501:9501 -v 宿主机目录地址:/var/www/html --name test -d env-grpc 
# 进入容器
docker exec -it test bash
# 在容器内安装hyperf
composer create-project hyperf/hyperf-skeleton grpc-demo
# 进入目录
cd grpc-demo
# 新建 grpc.proto
vim grpc.proto

syntax = "proto3";

package grpc;

service hi {
    rpc sayHello (HiUser) returns (HiReply) {
    }
}

message HiUser {
    string name = 1;
    int32 sex = 2;
}

message HiReply {
    string message = 1;
    HiUser user = 2;
}
 
# 保存退出

# 创建grpc文件夹
mkdir grpc
# 编译器protoc使用php插件生成gRPC的php代码
# --php_out=grpc/ 指示编译器将生成的 PHP 代码输出到 grpc/ 目录中。
#grpc.proto 是待编译的 Protocol Buffers 文件。
protoc --php_out=grpc/ grpc.proto 

 

根目录grpc文件下会生成如下:

 

配置composer.json

 

# 安装grpc server 示例
composer require hyperf/grpc-server

# 配置gRPC 服务

 

配置路由

 新建HiController.php

 安装 gRPC client

composer require hyperf/grpc-client

 

新建HiClient.php

 

新建GrpcController.php

添加client测试路由 

测试:

# 启动服务
php ./bin/hyperf.php start

  

 

浏览器请求 http://127.0.0.1:9501/client

 

posted @ 2023-04-21 22:28  php的自我修养  阅读(502)  评论(0编辑  收藏  举报