PHP内存耗尽甚至I';I’我当然还有


PHP Memory Exhausted Even I'm Sure That I Have More

我自己运行得很好的脚本开始出现错误:

PHP致命错误:允许的内存大小为12582912字节,已用尽(试图分配78字节)

我很确定我的内存限制不是12MB。此外,这和脚本无关,因为我知道我可以在本地主机上运行它。正如Codeigniter Profiler所说,它需要17MB的内存。

那么,造成这种情况的原因是什么呢?为什么我的服务器认为它有12MB的内存限制。。。

您可以尝试使用ini_set('memory_limit','2048M');在php代码中。

不建议将其设置得那么高,但一旦找到真正的原因,您可以稍后将其降低。

http://php.net/manual/en/function.ini-set.php

然后,您可以使用以下函数:memory_get_usage()来检查应用程序在特定行使用了多少内存。使用它来查找泄漏所在的特定行。

http://php.net/manual/en/function.memory-get-usage.php

您可以这样增加内存:

 ini_set('memory_limit','256M');

仅仅因为服务器有更多的内存并不意味着它会或应该将所有内存分配给一个特别贪婪的脚本系统(否则一个编码错误可能会占用系统的所有资源)。因此,PHP对其允许占用的数量施加了自己的限制。如果您修改htaccess文件,请添加:

 php_value memory_limit 20M

应允许其占用高达20Mb的空间。显然,你可以试试这个,看看你需要多少(试着先降低它,看看在这种错误的情况下数字是否会改变)。

你可以在PHP.net网站上找到更多关于memory_limit的信息

请注意,您确实应该尝试减少脚本所需的内存量(因为服务器上的其他系统现在会减少),但这个解决方案至少会让您达到目标。

正如其他人所说,您也可以在特定脚本开始时使用ini_set设置相同的变量,然后在运行结束时恢复到标准。然而,请注意(出于明显的原因),有些服务器不允许他们的脚本只说"我需要我的Srz Bzns的所有资源",并耗尽服务器的其余部分。