PHP 与 go 交互 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zzzkkk
V2EX    PHP

PHP 与 go 交互

  •  
  •   zzzkkk 2023-09-27 14:51:40 +08:00 2347 次点击
    这是一个创建于 745 天前的主题,其中的信息可能已经有所发展或是发生改变。

    对于生产环境不允许 exec 函数调用外部程序的情况?

    以前知道有 goridge 这种东西 需要 go 启动服务并保持常在

    php 再用 http get/post 方式调用 go 服务 这样不是很烦?

    比如要用 go 爬 1 万条数据 每次都传 1 万条 这样调用的话无法显示进度 比如每隔一秒向浏览器显示爬了多少条数据

    18 条回复    2023-10-31 09:27:22 +08:00
    Rache1
        1
    Rache1  
       2023-09-27 14:54:44 +08:00
    FFI
    maocat
        2
    maocat  
       2023-09-27 15:00:39 +08:00
    加中间件,消息队列
    codehz
        3
    codehz  
       2023-09-27 15:14:57 +08:00
    每次开进程损耗更大吧()
    8355
        4
    8355  
       2023-09-27 15:20:55 +08:00
    消息队列是主流方案,方便快速扩容,无法独立部署的话可以用 redis stream 5.0 就可以用了。
    性能很快,指令都是 o1 ,消息量大的话不如 kafka 或者 mq ,每天百万级没大问题,前期有量可以切独立 redis 便宜的狠。
    zzzkkk
        5
    zzzkkk  
    OP
       2023-09-27 15:21:39 +08:00
    @codehz

    对于很少用户的系统 根本不用关心 损耗

    而是用户体验第一

    这个进度条是多么重要啊
    Gota
        6
    Gota  
       2023-09-27 15:23:53 +08:00 via iPhone
    可以放个 Redis 在中间,共享状态,消息队列,广播事件 Redis 都支持,很适合用在爬虫这样的异步任务平台。
    Nazz
        7
    Nazz  
       2023-09-27 15:33:23 +08:00
    使用 sidecar 部署, 通过 http 通信
    QlanQ
        8
    QlanQ  
       2023-09-27 15:38:37 +08:00
    你的这种方式,进度条准吗?
    进度条是在浏览器显示的与,go 和 php 的交互方式没有什么关系吧
    skiy
        9
    skiy  
       2023-09-27 15:47:02 +08:00
    走 RPC ?或者走 MQ ( MQTT )。进度条不了解……这东西不要求精准啊。很多熟悉让你进度到 90%,就在那里卡你好久……
    awalkingman
        10
    awalkingman  
       2023-09-27 15:51:17 +08:00
    进度条是锦上添花,最核心的是把任务完成了,进度条显示一个大概就好了。
    通信的话,找个中间件解耦一下是最方便的。
    zzzkkk
        11
    zzzkkk  
    OP
       2023-09-27 16:14:04 +08:00 via Android
    进度条就是页面用 ajax 请求一个文本文件

    server 端 go 每隔一秒去更新这个文件 爬了多少条

    还有另一个文本文件 写了总数

    这进度是精准的

    就几个用户的系统 同一时间只有一个人执行爬虫 搞什么中间件 消息队列
    zzzkkk
        12
    zzzkkk  
    OP
       2023-09-27 16:15:56 +08:00 via Android
    还好现在 server 都是我控制

    想起刚从业时 往图片写文字 gd 扩展用得焦头烂额 都是因为自己没服务器权限

    要是自己能管服务器 用 imagick 扩展一下子就解决了
    Gota
        13
    Gota  
       2023-09-27 16:21:48 +08:00 via iPhone
    如果是临时用用的项目当然无所谓,正经项目里还是不建议用本地文件存状态。
    devopsdogdog
        14
    devopsdogdog  
       2023-09-27 16:26:03 +08:00
    @zzzkkk 就几个用户的系统 同一时间只有一个人执行爬虫 搞什么中间件 消息队列

    你自己都说了,随便输出个日志到服务器能看就行了,是我最多做个 转圈圈 ,知道是执行还是执行完就行了。
    sunmoon1983
        15
    sunmoon1983  
       2023-09-28 08:08:07 +08:00
    grpc ?
    dif
        16
    dif  
       2023-09-28 09:47:38 +08:00
    跨语言目前我用的是 grpc ,java <> python
    zzzkkk
        17
    zzzkkk  
    OP
       2023-09-28 09:48:52 +08:00 via Android
    java <> python 用 grpc 交互?
    guoguoyu
        18
    guoguoyu  
       2023-10-31 09:27:22 +08:00
    go -> redis <- php-workerman -> 进度条 搞定
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1205 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 17:30 PVG 01:30 LAX 10:30 JFK 13:30
    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