gpt4 book ai didi

php - memory_limit 在 PHP 中是如何工作的?

转载 作者:行者123 更新时间:2023-12-03 23:15:13 25 4
gpt4 key购买 nike

如果我有两个脚本和我的 memory_limit选项设置为 64M (例如)。如果我运行脚本 1 并且它需要 40M 并同时运行脚本 2 它有多少可用内存?

是否每个脚本都有最多 64M 或者他们共享这个内存?

最佳答案

每个独立运行的 PHP 脚本受其自身内存限制 ( as set by the configuration option memory_limit ) 的约束。此限制继承到所有包含的脚本中(因为这些脚本依赖于父脚本)。

一个例子 - 两个并行运行的脚本:

  • 你打开一个网页 /script1.php
  • 你也打开一个网页/script2.php

  • 由于这两个是完全独立的(没有简单的方法可以发现“另一个脚本”正在运行,或者甚至它存在),它们每个都会得到 64M 的限制——所以它们被允许使用的内存量为 64M一个,两个的结果是 128M。 (澄清一下,不可能在脚本之间“共享”这个内存:如果 script1.php 只消耗 1MB,它不能把它的其余限制“给”给 script2.php)

    一个不同的场景 - 一个脚本包括另一个脚本:
  • 你打开一个网页 /script1.php
  • 该脚本有一行 require('script2.php')

  • 在这种情况下,只有一个 64MB 的限制:这仍然被视为单个脚本,无论它包含多少个文件 ()s 或 require()s。换句话说, script2.phpscript1.php 继承限制(以及其他 PHP 设置)并且这里使用的所有内存都计入该限制。

    请注意,可以从脚本内部更改此限制(如果您的服务器配置允许 - 大多数情况下)。使用 ini_set('memory_limit', '128M');将新限制设置为 128 MB - 但到目前为止脚本使用的所有内存仍计入此限制。

    包括其他脚本和动态改变内存限制的脚本:
  • 你打开网页/script1.php (在 script1.php 中,从配置中设置限制为 64 MB)
  • 运行 require('script2.php') (在 script1.php 中,限制 64 MB 继承)
  • 运行 ini_set('memory_limit','200MB') (在 script2.php 中,明确更改为 200 MB)
  • 运行 require('script3.php') (在 script2.php 中,限制为 200 MB,如上所述)
  • 运行 require('script4.php') (在 script3.php 中,限制 200 MB 继承)
  • 运行 ini_set('memory_limit','-1') (在 script4.php 中,明确更改为“无限制”)
  • 运行 require('script5.php') (在script4.php中,继承了“无内存限制”)


  • 注意:可以设置一个比当前更低的限制,但这有立即超出它的风险(“我们正在使用 80 MB” - “设置限制为 64 MB” - “内存不足错误”);由于这种风险,很少有人尝试这样做。

    另请注意 memory_limit是一个配置设置,因此可以设置 in various places ;或者它的修改可以是 prevented由系统管理员。

    关于php - memory_limit 在 PHP 中是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34285583/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com