PHP内存问题你需要取消设置吗?

时间:2011-05-12 20:17:39

标签: php memory unset

如果在脚本执行完之前没有取消设置数组会发生什么?

我正在运行数千个CSV文件,将数十万个客户的数据解析为数组。它在前5/6小时工作正常然后开始陷入困境。

我每次执行大约运行5-10个CSV ...我想知道是否在脚本中取消设置数组会对此有所帮助......我认为在脚本结束后它们将被取消分配。我错了吗?

5 个答案:

答案 0 :(得分:1)

据我所知,数组 - 就像所有内存一样 - 应该在脚本执行时死掉。

您的PHP脚本是否被另一个PHP脚本调用?如果你是通过'include'来实现的,那基本上就是你的'低级'PHP脚本并将其插入更高级别的脚本 - 这将导致它们持续存在。

答案 1 :(得分:1)

脚本结束时清除所有内存。 您是否尝试过使用memory_get_peak_usage()memory_get_usage()?它们可用于查找内存分配问题。

答案 2 :(得分:0)

脚本成功完成后,应清除所有已用内存。如果不是这是PHP中的错误。 unseting数组在这里不会有帮助。

答案 3 :(得分:0)

我认为这取决于您运行的是哪个版本的PHP。 PHP 5.3有一个改进的垃圾收集机制,可以防止这种内存泄漏。此页面(http://www.php.net/manual/en/features.gc.performance-considerations.php)记录了5.3之前的版本中的问题,但建议您可以使用gc_collect_cycles()函数手动调用垃圾回收(如果我已正确阅读)。

答案 4 :(得分:0)

Unset只是破坏一个变量 - 它不会释放内存。如果在运行数小时之后发生这种行为,并且这是一次性脚本,则可以将CSV文件拆分为较小的块以加快速度并帮助找出问题开始发生的位置。