PHP 有做 RPC Server,且支持 Protobuf 的吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
EDDYCJY
V2EX    问与答

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

  •   EDDYCJY 2018-08-22 21:18:12 +08:00 6321 次点击
    这是一个创建于 2607 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    22 条回复    2020-06-24 10:02:17 +08:00
    cxh116
        1
    cxh116  
       2018-08-22 21:27:21 +08:00 via Android
    hanxiV2EX
        2
    hanxiV2EX  
       2018-08-22 21:32:30 +08:00 via Android
    Nginx 已经支持 protobuf 了
    EDDYCJY
        3
    EDDYCJY  
    OP
       2018-08-22 21:41:13 +08:00
    @cxh116 我记得,不是只支持 PHP Client 吗
    EDDYCJY
        4
    EDDYCJY  
    OP
       2018-08-22 21:42:04 +08:00
    @cxh116 我们同时也想做 PHP Server
    algery
        5
    algery  
       2018-08-22 21:42:52 +08:00
    Mark 等方案。。。
    EDDYCJY
        6
    EDDYCJY  
    OP
       2018-08-22 21:43:34 +08:00
    @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
       2018-08-22 21:47:03 +08:00
    @hanxiV2EX ememem..请问能详细说说吗,没接触过这个方案?
    sagaxu
        8
    sagaxu  
       2018-08-22 21:56:50 +08:00 via Android
    @EDDYCJY 用 go 做个 grpc 到 http json 的适配器就行了
    EDDYCJY
        9
    EDDYCJY  
    OP
       2018-08-22 21:58:09 +08:00
    @sagaxu http 适配器现在也有,但是大佬希望 PHP Server 也能走 RPC 且同个 IDL,保证技术栈的一致
    hanxiV2EX
        10
    hanxiV2EX  
       2018-08-22 22:10:46 +08:00 via Android
    @EDDYCJY 没试过,今天搜 gRPC 的时候发现 Nginx 支持了,应该 PHP 可以直接用吧。
    EDDYCJY
        11
    EDDYCJY  
    OP
       2018-08-22 22:26:02 +08:00
    @hanxiV2EX 应该是不行的,它并不是你想象中的那种(如果我没看错)
    kkeiko
        12
    kkeiko  
       2018-08-22 22:37:56 +08:00
    没有,不合适
    hanxiV2EX
        13
    hanxiV2EX  
       2018-08-22 23:58:19 +08:00 via Android
    g079708
        14
    g079708  
       2018-08-23 08:14:38 +08:00 via iPhone
    好像韩天峰用 swoole 在做这个事情。
    EDDYCJY
        15
    EDDYCJY  
    OP
       2018-08-23 08:55:20 +08:00 via iPhone
    @hanxiV2EX 这个我昨晚有看到,但是看了下作者一年多没 commit 了,而且好像没什么人用过?需要找个时间试试
    EDDYCJY
        16
    EDDYCJY  
    OP
       2018-08-23 08:55:59 +08:00 via iPhone
    @g079708 Swoole + Protobuf ?
    millken
        17
    millken  
       2018-08-23 09:09:14 +08:00
    我们用 swoole + protobuf 写过 GRPC 服务端,不过后来还是用 Go 重写了,微服务架构下,还是用 Go 来得方便。
    hj2002007
        18
    hj2002007  
       2018-08-23 09:37:57 +08:00
    zeroc ice 了解一下,多语言支持 客户端代码通过服务端提供的 Ice 对象 ID 连接服务端即可
    qiujin
        19
    qiujin  
       2018-09-03 14:22:15 +08:00
    写过简单的 PHP Grpc Server,如果不涉及到数据流等在 fpm 环境下不适合实现的功能外,用 PHP 实现一个简单的 Grpc Server 还是可以的。
    https://github.com/qiu-jin/phpegg/blob/master/framework/core/app/Grpc.php
    EDDYCJY
        20
    EDDYCJY  
    OP
       2018-10-13 10:43:22 +08:00
    @millken 您好,请问之前你们用的 Swoole + Protobuf 的 gRPC Server 的具体实现,有地方可以看看代码怎么实现的吗?
    millken
        21
    millken  
       2018-10-24 16:50:10 +08:00
    onanying
        22
    onanying  
       2020-06-24 10:02:17 +08:00
    http://openmix.org/ 开发的 Mix gRPC,并且使用 golang 开发了 protoc 的插件,能直接生成基于 Swoole 协程的 Server/Client,与 Golang 编写微服务体验一致,无框架依赖的通用 PHP gRPC 库: https://github.com/mix-php/grpc
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2623 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 02:09 PVG 10:09 LAX 19:09 JFK 22:09
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86