我的PHP应用程序有一个可以导入记录的导入脚本。
目前,它是从CSV文件导入的。它使用fgetcsv一次一行地读取CSV文件的每一行,并对每一行对该记录执行大量处理,包括数据库查询,然后转到下一行。它不应该需要不断积累更多的内存。
在导入了大约2500条记录之后,PHP就死了,说它已经超出了它的内存限制(132MB左右)。
CSV文件本身只有几个megs -发生的其他处理会做大量的字符串比较,比较,等等。我有大量的代码在它上面操作,它将很难提出一个“最小的再现样本”。
查找和修复此类问题的一些好方法是什么?
找到问题的原因
我有一个调试类,它在运行时记录我所有的数据库查询。因此,这些SQL字符串(大约30KB长)一直留在内存中。我意识到这不适合于设计为长时间运行的脚本。
可能还有其他来源的内存泄漏,但我相当确定这是我的问题的原因。
https://stackoverflow.com/questions/1010402
复制相似问题