如何修复PHP中的内存泄漏
2022-08-30 23:35:06
我的 PHP 应用程序具有可以导入记录的导入脚本。
目前,它正在从CSV文件导入。它读取 CSV 文件的每一行,使用 fgetcsv 一次一行,对于每一行,它对该记录执行大量处理,包括数据库查询,然后转到下一行。它不需要不断积累更多的内存。
在导入了大约2500条记录后,PHP死亡,说它已经超过了内存限制(132 MB左右)。
CSV文件本身只有几兆 - 发生的另一个处理做了很多字符串比较,差异等。我有大量的代码在操作它,很难想出一个“最小的再现样本”。
寻找和解决此类问题有哪些好方法?
发现问题的原因
我有一个调试类,它在运行时记录我的所有数据库查询。因此,这些大约30KB长的SQL字符串保留在内存中。我意识到这不适合设计用于长时间运行的脚本。
可能还有其他内存泄漏来源,但我相当确定这是我问题的原因。