V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
EDDYCJY
V2EX  ›  问与答

PHP 有做 RPC Server,且支持 Protobuf 的吗?

  •  
  •   EDDYCJY · Aug 22, 2018 · 6702 views
    This topic created in 2817 days ago, the information mentioned may be changed or developed.

    我司现在是使用 Go Server (gRPC),但是 PHP Client/Server 那边希望 IDL 能够互通

    但是翻查了一圈,没发现 PHP Server 支持 Protobuf 的

    想请教下大家有什么好的推荐,或方案呢? 🤔

    22 replies    2020-06-24 10:02:17 +08:00
    cxh116
        1
    cxh116  
       Aug 22, 2018 via Android
    hanxiV2EX
        2
    hanxiV2EX  
       Aug 22, 2018 via Android
    Nginx 已经支持 protobuf 了
    EDDYCJY
        3
    EDDYCJY  
    OP
       Aug 22, 2018
    @cxh116 我记得,不是只支持 PHP Client 吗
    EDDYCJY
        4
    EDDYCJY  
    OP
       Aug 22, 2018
    @cxh116 我们同时也想做 PHP Server
    ZddPub
        5
    ZddPub  
       Aug 22, 2018
    Mark 等方案。。。
    EDDYCJY
        6
    EDDYCJY  
    OP
       Aug 22, 2018
    @cxh116 Note that currently you can only create clients in PHP for gRPC services - you can find out how to create gRPC servers in our other tutorials, e.g. Node.js.
    EDDYCJY
        7
    EDDYCJY  
    OP
       Aug 22, 2018
    @hanxiV2EX ememem..请问能详细说说吗,没接触过这个方案?
    sagaxu
        8
    sagaxu  
       Aug 22, 2018 via Android
    @EDDYCJY 用 go 做个 grpc 到 http json 的适配器就行了
    EDDYCJY
        9
    EDDYCJY  
    OP
       Aug 22, 2018
    @sagaxu http 适配器现在也有,但是大佬希望 PHP Server 也能走 RPC 且同个 IDL,保证技术栈的一致
    hanxiV2EX
        10
    hanxiV2EX  
       Aug 22, 2018 via Android
    @EDDYCJY 没试过,今天搜 gRPC 的时候发现 Nginx 支持了,应该 PHP 可以直接用吧。
    EDDYCJY
        11
    EDDYCJY  
    OP
       Aug 22, 2018
    @hanxiV2EX 应该是不行的,它并不是你想象中的那种(如果我没看错)
    kkeiko
        12
    kkeiko  
       Aug 22, 2018
    没有,不合适
    hanxiV2EX
        13
    hanxiV2EX  
       Aug 22, 2018 via Android
    g079708
        14
    g079708  
       Aug 23, 2018 via iPhone
    好像韩天峰用 swoole 在做这个事情。
    EDDYCJY
        15
    EDDYCJY  
    OP
       Aug 23, 2018 via iPhone
    @hanxiV2EX 这个我昨晚有看到,但是看了下作者一年多没 commit 了,而且好像没什么人用过?需要找个时间试试
    EDDYCJY
        16
    EDDYCJY  
    OP
       Aug 23, 2018 via iPhone
    @g079708 Swoole + Protobuf ?
    millken
        17
    millken  
       Aug 23, 2018
    我们用 swoole + protobuf 写过 GRPC 服务端,不过后来还是用 Go 重写了,微服务架构下,还是用 Go 来得方便。
    hj2002007
        18
    hj2002007  
       Aug 23, 2018
    zeroc ice 了解一下,多语言支持 客户端代码通过服务端提供的 Ice 对象 ID 连接服务端即可
    qiujin
        19
    qiujin  
       Sep 3, 2018
    写过简单的 PHP Grpc Server,如果不涉及到数据流等在 fpm 环境下不适合实现的功能外,用 PHP 实现一个简单的 Grpc Server 还是可以的。
    https://github.com/qiu-jin/phpegg/blob/master/framework/core/app/Grpc.php
    EDDYCJY
        20
    EDDYCJY  
    OP
       Oct 13, 2018
    @millken 您好,请问之前你们用的 Swoole + Protobuf 的 gRPC Server 的具体实现,有地方可以看看代码怎么实现的吗?
    onanying
        22
    onanying  
       Jun 24, 2020
    http://openmix.org/ 开发的 Mix gRPC,并且使用 golang 开发了 protoc 的插件,能直接生成基于 Swoole 协程的 Server/Client,与 Golang 编写微服务体验一致,无框架依赖的通用 PHP gRPC 库: https://github.com/mix-php/grpc
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2760 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 70ms · UTC 15:38 · PVG 23:38 · LAX 08:38 · JFK 11:38
    ♥ Do have faith in what you're doing.