grpc PHP 的疑惑 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
clearT
V2EX    PHP

grpc PHP 的疑惑

  •  
  •   clearT 2019-01-14 22:48:23 +08:00 7550 次点击
    这是一个创建于 2521 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1.请问各位大佬 grpc 为什么只支持 php 的 client,不支持 php server,是因为 php cli 模式下没有稳定可用于生产的 支持 http2 的服务器吗( php -s 不能用于生产环境)?如果是这样的话是否采用 swoole 可以实现一个 cli 的 http2 服务,然后自己在加上路由的功能?(或者 swoole 和 laravel 等框架适配直接使用框架的路由)不知道我这样理解对不对。

    2.grpc 是基于 http2 和 pb 的,所以是否服务端是开启一个 http 服务来监听 rpc 请求,而不是TCP 服务?

    2.Thrift 支持 php server ?

    不知道问题是不是有点傻,希望得到大佬的解答,谢谢。

    18 条回复    2020-07-16 19:07:05 +08:00
    sagaxu
        1
    sagaxu  
       2019-01-14 22:52:58 +08:00 via Android
    不支持 php 很奇怪吗,leetcode 也不支持 php 刷题啊
    CTO
        2
    CTO  
       2019-01-14 22:58:09 +08:00   1
    @sagaxu 我第一次刷 leetcode , 找了半天没有 PHP,差点一口老血喷出来,还好我有压箱底的 c :doge
    visitant
        3
    visitant  
       2019-01-14 22:58:40 +08:00 via iPhone
    我记得,php 会限制进程运行时间,可能跟这个有点关系?
    troywinter
        4
    troywinter  
       2019-01-14 23:35:15 +08:00
    grpc 是通过 http2 协议通信的,可以从这个角度看看是否有完整的支持
    clearT
        5
    clearT  
    OP
       2019-01-14 23:51:51 +08:00 via iPhone
    @sagaxu 我是想知道不支持的原因是不是像上面我想的那样,现在微服务生态比较流行,php 微服务实现起来不方便,微博貌似是用 go 实现了一个 agent 来和 php-fpm 通信,我想请教的是如果用 swoole 实现一个 grpc server 是否需要向我上面说的那样自己实现路由功能,php 的微服务生态和 java 比有点差啊,好像 swoft 不错
    clearT
        6
    clearT  
    OP
       2019-01-14 23:53:52 +08:00 via iPhone
    @sagaxu 我现在是个学生还没有机会实践微服务,但我对这方面挺有兴趣的想学
    sagaxu
        7
    sagaxu  
       2019-01-15 00:12:11 +08:00 via Android   1
    @clearT php 的 http2 支持的不好只是表象,根本原因是长期以来,大厂更喜欢用 C++和 Java 做底层服务,然后 PHP 调用这些服务做业务逻辑,所以有 client 支持就够了。

    以前 php 只有 fpm 一种姿势,并且现在仍然是 95%以上公司的选择,swoole 在国内很小众,在国外更小众。如果要支持 grpc,只能是 swoole 开发者主动去适配 grpc。swoole 团队的 grpc 支持,应该快了,他们现在都是全职开发 swoole 了。

    你选择了 PHP,就要面对现实,很多时候它都不是一等公民,PHP 支持的不好或者完全不支持,很常见,平常心对待。
    clearT
        8
    clearT  
    OP
       2019-01-15 00:35:17 +08:00 via iPhone
    @sagaxu 嗯,多谢解答,我还是很平常心的,不可能只学一门语言的,虽然我还没有达到那个层次,但我相信语言只是工具这句话绝不只是用来装 x 的,我还是希望 PHP 的生态能更好一些,毕竟它真正领我进入了编程的大门
    DavidNineRoc
        9
    DavidNineRoc  
       2019-01-15 09:38:34 +08:00
    @sagaxu
    @CTO 大清亡了? LeetCode 已经支持 PHP 了,别在落后一百年了
    sagaxu
        10
    sagaxu  
       2019-01-15 09:44:34 +08:00 via Android
    @DavidNineRoc 加入 php 还不到一个月
    sagaxu
        11
    sagaxu  
       2019-01-15 09:48:04 +08:00 via Android
    @DavidNineRoc 准确的说,2019 年 1 月 10 号才开始支持的 PHP,不到一周
    CTO
        12
    CTO  
       2019-01-15 11:07:52 +08:00
    @DavidNineRoc 怎么张口就来啊,还落后一百年?
    yanyandenuonuo
        13
    yanyandenuonuo  
       2019-01-15 14:57:40 +08:00
    基于 swoole 可以实现 grpc,通常需要 2 个部分,一个前端 http gateway 去处理 http 请求,然后解析自定义的路由去转发到另一个对应的后端 rpc 服务。
    to2false
        14
    to2false  
       2019-01-17 17:4:42 +08:00
    to2false
        15
    to2false  
       2019-01-17 17:45:27 +08:00
    补充说明下,用 php 和 go 都互相测试过了
    clearT
        16
    clearT  
    OP
       2019-01-17 18:02:36 +08:00 via iPhone
    @to2false 这是 client,不是 server
    to2false
        17
    to2false  
       2019-01-17 19:06:03 +08:00 via iPhone
    @clearT 看过了?明明有 server 的 example
    onanying
        18
    onanying  
       2020-07-16 19:07:05 +08:00
    PHP 之所以没有 gRPC 的 Server 是因为 fpm 的特殊执行方式,server 是借助 nginx 搭建的,因此 Server 只能以这样的方式存在 https://mattallan.me/posts/protobuf-php-services/ ,由于 PHP 的 cli 并非主流使用方式,因此就不奇怪了,但是我们能借助 Swoole 实现 Server: https://github.com/mix-php/grpc,还能和 go-micro 直接互通: https://github.com/mix-php/micro
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4908 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 03:51 PVG 11:51 LAX 19:51 JFK 22:51
    Do have faith in what you're doing.
    ubao msn 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