代码之家  ›  专栏  ›  技术社区  ›  JW.

PHP内存限制

php
  •  12
  • JW.  · 技术社区  · 16 年前

    在php 5.0.4中,如果 不要 配置-启用内存限制,忽略内存限制指令。(在推荐的php.ini文件中,它被设置为8M,但文档显示它被忽略了。)因此,在这种情况下,每个脚本的内存是否都有限制,或者只受系统的限制?

    我问是因为我要升级到php 5.2.8,它 默认情况下允许内存限制。所以现在我必须将值设置为适当的值。推荐的php.ini文件现在设置为128m,但我不知道这是否是 更多 较少的 比5.0.4在默认情况下所做的还要多!

    我正在升级生产系统,所以我想避免行为上的任何重大变化。这个 documentation (搜索“内存限制”)在这一点上非常混乱。它说“默认”,但我不知道这是否意味着配置文件中设置的默认值,或者在禁用内存限制时使用的默认值。

    3 回复  |  直到 12 年前
        1
  •  9
  •   user42092    16 年前

    PHP中的内存限制器是可选的;如果在编译时禁用它,则完全没有限制。

    在5.0.4中,它是禁用的,除非您在编译时明确要求它,原因是内存限制器 useless until 5.2 它应该做的事情并不多,包括像mysql函数这样的事情。它转弯了 从5.2.1开始,现在他们学会了数数。

    如果有疑问,请禁用它或确保更新配置文件以使用新的默认值。将其保留在8MB并升级到5.2.8几乎肯定会导致问题。

        2
  •  4
  •   Darryl Hein IrishChieftain    12 年前

    128m很高。你可能需要,但我会很惊讶的。

    更重要的是,可以在php.ini中将限制设置为全局默认值:

    memory_limit = 32M
    

    您还可以在脚本中重写它:

    <?php
    ini_set('memory_limit', '128M');
    ...
    

    您可能会发现您只有少量需要大量内存的脚本。找到一些舒适的价值(通过测试),然后只为那些需要更多的。

        3
  •  3
  •   Byron Whitlock    16 年前

    在5.2之前的php中,默认内存限制为8MB,在php 5.2.0中,默认内存限制增加到16MB。目前默认为128MB。

    要重现5.2之前版本的行为,请将内存限制显式设置为8MB。

    在php.net网站的“资源限制”下查看。

    http://us.php.net/ini.core

    编辑

    在php 5.2.1之前,为了使用这个指令,必须在编译时使用configure行中的-enable memory limit来启用它。

    检查旧服务器的编译标志,如果没有启用它,则不会强制执行任何限制。