PHP 如何实现异步请求实时返回结果? - V2EX
solaro

PHP 如何实现异步请求实时返回结果?

  •  
  •   solaro Jul 24, 2020 3481 views
    This topic created in 2127 days ago, the information mentioned may be changed or developed.
    场景如下:
    用户 A ------请求-----> API-1
    API-1 ------收到请求后,往队列里丢数据,让队列异步处理------>队列
    队列 ------CURL 请求 API-2 ----->返回结果

    现在的问题是:用户 A 本次请求希望能实时得到返回结果。那么问题来了:返回结果要怎么实时返回,就算结果返回,也是返回给队列(或者说先存储于 DB 中),那么用户 A 的当前这个没法收到实时数据,或者说直接在代码里 sleep 个 N 秒后再读取 DB ????
    12 replies    2020-07-27 22:32:56 +08:00
    solaro
        1
    solaro  
    OP
       Jul 24, 2020
    目前用的 laravel
    有没有大佬碰到过这种场景。API-1 和 API-2 网件延迟在 500ms 左右
    solaro
        2
    solaro  
    OP
       Jul 24, 2020
    有没有其他方案可以解决的。或者 websocket 内存常驻????
    ooh
        3
    ooh  
       Jul 24, 2020
    扔队列里面异步处理成功回调通过长连接通知客户端
    还不如 api1 请求成功后,客户端定时查询处理结果,500ms 也转不了几下
    kaiki
        4
    kaiki  
       Jul 24, 2020   1
    想想扫码登录是怎么处理的呗,隔一段时间请求一下,直到有返回
    KasuganoSoras
        5
    KasuganoSoras  
       Jul 24, 2020   1
    给你个思路:
    客户端 -> WebSocket -> Swoole 服务端,然后 Swoole 再把用户请求转发给 API,并且转发的时候为这个请求打上一个 Tag,例如加个 Header,用于标注是哪一个 WebSocket 客户端发来的请求。API 处理完以后把消息返回给 Swoole,并且记得附带上刚刚请求来的 Tag,然后 Swoole 根据 Tag 寻找对应的 WebSocket 客户端,再把消息推回去。
    jugelizi
        6
    jugelizi  
       Jul 24, 2020 via iPhone
    典型的长轮询呀
    rming
        7
    rming  
       Jul 24, 2020 via iPhone
    不在乎 rps 的话,把队列改成同步执行
    LinsVert
        8
    LinsVert  
       Jul 24, 2020
    前端轮询就行了 同 4L 的扫码登陆;或者就同步执行,laravel 的话 就是 dispatchNow
    solaro
        9
    solaro  
    OP
       Jul 27, 2020
    @kaiki 求有束,而且求是保持住的,并不是客端那
    solaro
        10
    solaro  
    OP
       Jul 27, 2020
    @rming 同步行,PHP 的程一行 timeout
    solaro
        11
    solaro  
    OP
       Jul 27, 2020
    @jugelizi 不是吧,可能是接?
    solaro
        12
    solaro  
    OP
       Jul 27, 2020
    @KasuganoSoras 好像你的方案更靠些呢,我哈,
    About     Help     Advertise     Blog     API     FAQ     Solana     1072 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 59ms UTC 22:47 PVG 06:47 LAX 15:47 JFK 18:47
    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