【问题标题】:variable storage and php out of memory error [closed]变量存储和php内存不足错误[关闭]
【发布时间】:2013-05-08 21:02:13
【问题描述】:

假设 PHP 内存限制设置为 128M

现在假设你这样做了

$v = "128 M worth of data";

这会导致发生 PHP 内存不足错误吗?

【问题讨论】:

  • 你说的是哪个限制?准确地说

标签: php memory memory-management fatal-error


【解决方案1】:

虽然有几个限制,但我想您的意思是可以使用ini_set 设置的“memory_limit”值。那么答案实际上是否定的。

如果您将该值设置为确切的限制,您会没事的(如果这是您脚本中的所有内容)。但问题是当您使用多于 1 个字节时。所以你不能再在你的脚本中做任何事情。如果您尝试复制该值或对其进行某些操作,您将超过限制并且它会崩溃。所以有这样的字符串是没用的。

最近发布的这个问题有一些很好的答案:memory-get-peak-usage-with-real-usage

【讨论】:

  • 需要注意的是memory_limit是集体的,一个字节的内存可以来自任何地方。除非您意识到风险并谨慎行事,否则不要使用如此接近 memory_limit 的数据。即使如此,如果答案是“让我们通过增加内存限制并冒着关闭我的应用程序的风险让 PHP 屈服”,那么你很可能会错误地解决问题。如果您需要在运行时用完这么多内存,这可能表明您需要进行垃圾收集,或者寻找更具可扩展性的解决方案。
【解决方案2】:

是的,它会失败并出现以下错误,你可以试试:

致命错误:xxxxxx 字节的允许内存大小已用尽(试图分配 xxxxxxx 字节)

这是预期的结果,因为字符串的数据必须保存在某个地方 -> 在内存中;)

【讨论】:

    猜你喜欢
    • 2013-12-24
    • 2011-10-28
    • 1970-01-01
    • 2012-10-25
    • 2013-07-21
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    相关资源
    最近更新 更多