请求大接口会占用大量内存【已解决】

he426100

问题描述

有个业务需要请求一个外部接口,返回的数据特别大,开了gzip压缩,json_decode后内存占用达到400M,这400m会一直占着不释放,还有可能往上加,如果worker_num开大一点更不得了,会把内存耗尽。

为此你搜索到了哪些方案及不适用的原因

测过不同php版本,测过swoole,试过把类属性改成局部变量,都无法解决,最后的办法是把workerman常驻改成http异步请求。
原本是开了两个workerman,一个publish,一个listen然后处理

请问有更好的方案么?

919 1 3
1个回答

walkor

unset超大变量后,执行

gc_collect_cycles();
gc_mem_caches();

手动回收内存

  • he426100 2022-12-10

    原来如此,难怪更新workerman后每次执行status内存就释放了

年代过于久远,无法发表回答
🔝