EasySwoole Task执行超时的问题

最近在使用EasySwoole处理异步任务(Task)时遇到了一个问题。

有一个Task,原本是在EasySwooleEvent.php中注册Crontab并异步调用这个Task运行的,好像没啥问题。但当把这个Task改为在Http控制器中执行时,问题出现了。

这个Task的运行时长通常在2分钟左右,在Crontab中能正常运行,而通过Http控制器去请求同步执行时,基本上都是在8秒左右就结束了,并且返回一个-7的错误代码,EasySwoole官网文档中说这个错误是因为超时。

试着在dev.php中修改MAIN_SERVER下的SETTINGTASK的配置,各个配置都改了一遍,包括num和time的所有配置,还是不行。看来这应该是个BUG了。

EasySwoole前两年用的是3.3版本,这次用的3.5版,而最新版是3.7。Github和Gitee上的仓库看起来是是一样的,最近一次提交是8个月前,官网上的文档有不少页面中的代码示例还是老版本中的写法,看来是久不维护了。

Swoole本身搞协程那一套就有很多BUG,特别是Swoole3及之前的版本,新版本好一些,但还是有不少坑,EasySwoole基于Swoole,也不可避免地有天然的缺陷。所以,搞清楚自己的需求很重要,首先问问自己真的要上Swoole吗?其次,如果真的要上,哪些地方可以用Swoole,哪些地方不能用一定要搞清楚。最后,协程是Golang先搞出来的,要不要转到Go呢?毕竟老做PHP也没啥意思啊!

Leave a Comment

豫ICP备19001387号-1