NinJa911 Blog - gotask
type: channel
link: https://blog.ninja911.com/tag/gotask/
items: 记一次踩坑hyperf/gotask,最后放弃

记一次踩坑hyperf/gotask,最后放弃
type: item
date: 2024-11-26T12:52:00+08:00
description: 需求背景现在业务用mongodb存储聊天记录，每月需要承受1200万行聊天记录，希望更高效更稳定承接mongoclientswoole本身是协程，但mongodb官方无法被Hook，导致无法使用协程mongo client想要方便的做phpunit test使用第三方，无需修改三方源码，开箱即用.调研对象hyperf/gotask采用golang1.14写的，作者利用golang协程作为辅助mongodb client，并通过sideload侧载实现。踩过的坑hyperf/gotask 文档不太细，但很多细节并没有抛出来，可能只是作者边缘业务在用，在或者用它的人很少。ext-mongodb-1.20.0，不再支持fromPHP,提示错误Function MongoDB\BSON\fromPHP() is deprecated,在php内除非降级ext-mongodb，但是实际上生产环境不可能因为这个组件而降级，所以定性“放弃gotask”gotask本身有3套，核心/go2php/mongoclient， 这里在文档里并没有讲解，需要看golang源码example，才能定位。mongoclient，实际读取配置，是从system env环境里读取MONGO_URI,(//user:password@ip:port/?adminSource=admin),等等.问题来了，多库多server情况，怎么办？ 跨机器设备怎么办？ 所以定性“放弃gotask”再针对GoTask打个总结hyperf/gotask,github star很少使用hyperf/gotask，使用生产的也很少，暴露出来的问题少没有可持续性维护