【问题标题】:php memory_limit issuephp memory_limit 问题
【发布时间】:2010-09-20 07:40:00
【问题描述】:

我的一个脚本需要大内存。可能正因为如此,我收到以下错误

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

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

【问题讨论】:

  • 什么操作导致了这个错误?您需要调试代码以隔离导致此问题的原因。另外,你在哪里打电话给ini_set('memory_limit', '512M');,本地机器?托管网站?

标签: php mysql


【解决方案1】:

您可以访问 php.ini 文件吗?然后在那里更改 memory_limit 值。

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

也很高兴知道:Performance ConsiderationsGarbage Collection

编辑(您的问题的可能答案,为什么memory_limit 不适用于ini_set

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

在 PHP 5.2.1 之前,为了使用 该指令必须在 通过使用编译时间 --enable-memory-limit 在配置行。这个编译时标志也是 需要定义函数 memory_get_usage() 和 memory_get_peak_usage() 之前 5.2.1.

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

来源:php.net

【讨论】:

    【解决方案2】:

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

    你可以在php.ini文件中设置它吗?

    【讨论】:

    • 是的,从 php.ini 设置它有效吗? ini_set() 不起作用的问题可能是什么
    【解决方案3】:

    我之前有一个similar issue。就我而言,是 suhosin 补丁阻止了我的脚本获取更多内存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-13
      • 2017-09-13
      • 2013-08-08
      • 2012-11-09
      • 2012-04-29
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      相关资源
      最近更新 更多