这是老兵最近碰着的问题~

业务场景描述:

首先curl因此工具的形式封装了一个类,详细的业务逻辑便是实例化curl类,然后循环要求一个接口获取数据,业务逻辑是通过命令行实行的

当时暴露的问题是每循环16W条记录,就会中断,提示内存不敷~

phpcurl采集中断填坑日志在轮回逻辑中应用curl抓取数据导致内存不足剧本中止 Node.js

处理过程:

问题暴露后老兵最先想到的是在实行脚本过程中把利用过的变量全部开释,但是却忽略了curl工具,由于curl类内部封装了开释ch资源的逻辑,以是没有在意,但是再次实行的时候还是报错,我就开始犹豫了,首先开释变量的思路肯定是对的,但是又想不到还有什么变量在占用内存。

于是我就去翻阅php的手册,垃圾回收机制,在看curl类的封装才明白缘故原由。

curl类中,把curl初始化的资源句柄保存成公共属性,由于忘却开释curl工具,只管ch资源句柄被开释,但是工具的内存占用还是存在~

以是我修正了一下逻辑,在每次循环结束将curl工具也开释~

再次实行OK,无论脚本运行多久都没问题~

本日的填坑就演示到这里,欢迎战友们留言互换~