我正在运行一个PHP脚本(CLI)来计算一件大事。它可能是一个(几乎)无限循环,但在17000次运行后,我的内存不足。我可以以某种方式转储一些内存(比如说每1000次运行一次),这样我可以继续运行它吗?循环中的PHP段错误
/最大
我正在运行一个PHP脚本(CLI)来计算一件大事。它可能是一个(几乎)无限循环,但在17000次运行后,我的内存不足。我可以以某种方式转储一些内存(比如说每1000次运行一次),这样我可以继续运行它吗?循环中的PHP段错误
/最大
在PHP 5.3中:gc_collect_cycles()
。
这是关于PHP内存管理的article。
如果您尚未完成,您还可以increase available memory in PHP。
请记住:
有时你不能只是“转储内存”。根据您的算法,您可能需要以前计算的结果以用于将来的计算。
这里的关键可能是将问题分解为更小的问题并单独解决。
查看关于Dynamic Programming的文章。
如果这不是服务器应用程序,我会建议将脚本分解为cron作业。
无论如何,这个问题很可能是你不小心你的变量。如果你的内存不足,那么你需要记住unset()你的变量。同样,观察你的变量范围。如果一个变量永远不会超出范围,PHP GC将无法清除它,除非您删除对它的所有引用。
你在循环什么,有什么方法批量加载数据,所以你不是一次加载它? – joshtronic 2010-09-16 20:50:24
你真的需要在这里显示一些代码 – 2010-09-16 20:53:09
如果你提供了一些关于你在循环中做什么的代码/细节,也许有人可以建议使用较少(或恒定)内存的方法。 – Matthew 2010-09-16 20:54:04