2009-09-30 73 views
0

我越来越想运行一个PHP脚本,我写的时候出现以下错误:PHP使用太多内存

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 56320 bytes) in /home/evergrf2/public_html/ianburris/p/maptile/mapfetcher.php on line 43

什么让我困惑的是,它说,允许内存大小为33554432个字节,当脚本试图分配56320字节的空间允许的内存耗尽。当56320小于33554432时这怎么可能?也许我误解了这是什么意思...

回答

5

它说试图分配额外的56320字节导致内存耗尽(所以它已经至少分配了33498112字节)。

6

配置56320推动你超出限制。如果需要,请增加您在php.ini中的限制。 更清楚不读取它作为分配56320是超过允许33554432.相反阅读它,同时分配56320,我们超过了限制33554432.

修改:不增加没有正确调试,并确保没有内存泄漏。

+0

在增加php.ini中的限制之前,实际尝试在程序中发现泄漏会更好。确实是 – 2009-09-30 19:15:59

+0

。修改答案:) – Mohammad 2009-09-30 19:18:39

2

我还会在Xdebug帮助下对脚本进行分析, 以帮助查找可能的内存泄漏。

3

33554432字节是32MB,这并不是很大。

您可以增加PHP的内存限制(在php.ini中,查找一行读取'memory_limit = 32M'并适当修改它的行)。我通常使用128M进行开发和大量的数据处理。

另一种解决方案是配置并重写代码以使用较少的内存。