【问题标题】:Prevent memory overflow防止内存溢出
【发布时间】:2010-07-19 19:52:26
【问题描述】:

在我使用 curl 的 php 脚本中,出现以下错误:“致命错误:允许的内存大小为 262144 字节已用尽(尝试
allocate 77824 bytes) in"... 它指出了这部分脚本:"$s = curl_exec($c);"

有什么问题?又该如何解决呢?

【问题讨论】:

    标签: php memory curl


    【解决方案1】:

    在这种情况下,您的服务器配置错误。

    允许的内存大小为 262144 字节

    每个脚本 200 KB 的 RAM 对于大多数 PHP 脚本来说是不够的。根据我的经验,标准是至少 8 MB; 16MB 是正常的。像 WordPress 这样的博客系统(它确实很胖,但仍然是目前最流行的博客系统之一)在 8 MB 的内存中窒息而在 16 MB 的情况下运行得体。

    您应该更改 php.ini 中的 memory_limit 值。如果您使用共享主机,请要求提供商将其增加到至少 8M,最好是 16M 或更多。如果他们否认,那就离开那里:这是不合标准的托管。

    【讨论】:

      【解决方案2】:

      您分配的内存超出了堆的处理能力

      设置更高的限制,例如

      在脚本的顶部::

      ini_set("memory_limit","10M");
      

      或者在你的 php.ini 中

      memory_limit = 10M
      

      这会将你的 memory_limit 设置为 10M

      【讨论】:

        【解决方案3】:

        ini_set() 可能比在php.ini 中设置一些东西更好。如果您有一个您知道需要比标准内存更多的特定应用程序 - 那么增加该应用程序的内存限制就可以了。但是,您需要非常小心地打开所有代码以具有更高的内存限制。

        也就是说,如果您将 memory_limit 设置为 0,则没有内存限制,脚本将使用所需的内存(系统可以提供)。

        【讨论】:

          【解决方案4】:

          这里有几个建议:

          1. 编辑您的 php.ini 文件并更改显示 memory_limit = .25M 的行,使其显示

            memory_limit = 16M

          2. 确保你在打电话

            curl_close($c);

            始终如一。

          如果你想包含更大的代码 sn-p,也许我们可以看到你有内存泄漏的地方。

          【讨论】:

            猜你喜欢
            • 2013-11-24
            • 2021-11-01
            • 2018-04-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多