首页 > 其他分享 >hyperf3搭建grpc demo

hyperf3搭建grpc demo

时间:2023-04-21 22:47:27浏览次数:42  
标签:install hyperf3 demo grpc && -- docker php

搭建环境如果是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

 

标签:install,hyperf3,demo,grpc,&&,--,docker,php
From: https://www.cnblogs.com/chenjiangbin/p/17341897.html

相关文章

  • 交叉编译gRPC
    重点要参考官方文档:https://github.com/grpc/grpc/blob/master/test/distrib/cpp/run_distrib_test_cmake_aarch64_cross.sh如果要支持AG35或AG55X,要修改camkeconfig.按官方文档可能还需要安装libssl-dev.此次编译源码选的grpc-v1.45.2,官网下载,或gitbub下载都可以. ......
  • obd demo快速部署单副本oceanbase(在线)
    资源要求:可用内存不少于8G安装目录空间不少于50G(默认安装在当前安装用户的家目录下) 1.什么是obd?odb是oceanbase社区版部署工具oceanbasedeployer的简称,通过obd可以快速完成oceanbaseclusterr的部署。不传入配置文件的情况下,在单机通过执行obddemo可以快速部署oceanba......
  • dbatools demo
    break#从PowerShellGallery安装dbatools模组Install-Moduledbatools<#01.查找SQL实例02.连接SQL实例03.检查备份04.检查磁盘空间05.备份数据库06.安装欧拉维护工具07.运行Job08.测试备份09.查看fail的job10.检查最大......
  • hyperf3 框架原理
    一:hyperf核心组件二:Inject实现原理1:通过InjectAspect代理了Inject注解2:具体执行逻辑扫,框架加载开始描所有的类,只要包含Inject注解的都会生成一个proxy类3:ClassLoader拦截Composer原始加载类方法,定位到proxy文件类,通过__handlePropertyHandler注入Inject注解的属......
  • gRPC入门
    1.gRPC简介gRPC是一种高性能、开源和通用的远程过程调用(RPC)框架,由Google开源并维护。它使用ProtocolBuffers(protobuf)作为接口定义语言(IDL),提供跨平台、跨语言的RPC调用支持。gRPC具有以下几个特点:高性能:使用HTTP/2协议,支持多路复用和流控制等特性,能够在客户端和服务器之间高效......
  • TS初始化Demo
    初始化Demo需要的文件 初始化tsconfig.json文件tsc--init 初始化package.json文件npminit 使用rollup打包,packge.json文件中加入依赖{"scripts":{"test":"echo\"Error:notestspecified\"&&exit1","build&quo......
  • 主机资源情况监视器demo
    importparamiko#导入paramiko模块用于SSH连接importpsutil#导入psutil模块用于获取系统信息importwx#导入wx模块用于构建GUI应用程序classRemoteMonitor(wx.Frame):#定义RemoteMonitor类,继承自wx.Frame类def__init__(self,host,username,password,port......
  • 从 HTTP 到 gRPC:APISIX 中 etcd 操作的迁移之路
    罗泽轩,API7.ai 技术专家/技术工程师,ApacheAPISIXPMC成员。原文链接ApacheAPISIX现有基于HTTP的etcd操作的局限性etcd在2.x版本的时候,对外暴露的是HTTP1(以下简称HTTP)的接口。etcd升级到3.x版本后,其对外API的协议从普通的HTTP切换到了gRPC。为了兼顾......
  • kubebuilder开发kubernetes operator demo
    环境准备go环境配置wgethttps://golang.google.cn/dl/go1.19.8.linux-amd64.tar.gztarzxvfgo1.19.8.linux-amd64.tar.gzmvgo/usr/local/vim/etc/profile在最结尾添加exportHOME=/rootexportGOROOT=/usr/local/goexportGOPATH=/opt/idcus/goexportPATH=$PATH:......
  • Spring AOP demo
    动态代理模式实现,比如可以在Bean的生命周期创建阶段,根据Pointcut判断当前bean是否满足切入条件,如果满足,再根据织入器ProxyFactory织入到JoinPoint,再根据bean创建代理对象名词JoinPoint:可以理解成系统中每一个可以应用aop的点,一般是指方法。spring中只支持方法,Pointcut:根据P......