php memory_limit问题

时间:2010-09-20 07:40:00

标签: php mysql

我的一个脚本需要大内存。可能因为这个我得到了跟随错误

  

致命错误:内存不足(已分配   42729472)(试图分配32个字节)

我尝试使用ini_set('memory_limit','256M')更改memory_limit;在我的页面顶部,但我仍然遇到同样的问题。我也试过ini_set('memory_limit','512M');但没有运气。

3 个答案:

答案 0 :(得分:4)

你有权访问php.ini文件吗?然后在那里更改memory_limit值。

您还应该分析您的脚本。很多数据库事务?他们中的许多人在循环中?很多循环?很多临时变量?巧妙地使用unset可以产生巨大的差异。

也很高兴知道:Performance ConsiderationsGarbage Collection

修改(您的问题的可能答案memory_limitini_set无效)

  

memory_limit integer设置   最大内存量,以字节为单位   允许脚本分配。这个   有助于防止写得不好的脚本   吃掉所有可用的记忆   一台服务器。请注意,没有记忆   limit,将此指令设置为-1。

     

在PHP 5.2.1之前,为了使用   它必须启用此指令   编译时使用   配置行中的 - enable-memory-limit 。这个编译时标志也是   需要定义功能   memory_get_usage()和   memory_get_peak_usage()之前的   5.2.1。

     

使用整数时,值为   以字节为单位。速记符号,   如本常见问题所述,也可能是   使用

来源:php.net

答案 1 :(得分:2)

大约42M之后崩溃了,这告诉我PHP解释器没有得到备忘录。在带有ini_set()输出的测试页中尝试相同的phpinfo()并查找内存限制。

您可以在php.ini文件中进行设置吗?

答案 2 :(得分:0)

我之前有similar issue。在我的例子中,它是suhosin补丁,阻止我的脚本获取更多内存。