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

PHP 与 go 交互

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

    对于生产环境不允许 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   ·   实用小工具   ·   2485 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:36 · PVG 12:36 · LAX 20:36 · JFK 23:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.