PHP脚本似乎无法正确释放内存,可能是由于数据库交互的原因


PHP script seems not to free memory properly maybe due to database interaction

我有一个用PHP编写的非常复杂的脚本,它读取许多CSV文件并将内容导入数据库。在某些地方,我不是直接通过INSERT语句,而是通过对象来实现这一点。

我的问题是top(该脚本运行在带有PHP 5.3.2的ubuntu 1004上)显示apache2进程消耗了几GB的内存,而memory_get_usage(true)将保持在250 MB左右。我开始调用gc_collect_cycles(),它表示有时会收集超过100000个周期,但消耗的内存仍然没有减少。在离开函数作用域之前,我开始取消设置变量。

有没有办法追踪内存使用量巨大的原因,更重要的是有没有办法解决它?

您尝试过使用Webgrind吗?

我以前用过它来了解资源消耗情况,你经常可以很快看到哪些电话的成本最高。处理大型应用程序的输出可能需要一些时间,但这可能是值得的。