包含的脚本中设置的内存限制是否适用于完整的请求?

发布于 2024-09-06 17:22:39 字数 84 浏览 4 评论 0原文

当我在包含的脚本中设置 ini_set('memory_limit', '100M'); 时,这是否适用于包含此脚本的完整请求?

When I set ini_set('memory_limit', '100M'); in an included script, does this apply to the complete request, in which this script is included?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

贪了杯 2024-09-13 17:22:39

更新 acmatos 的评论:是的,如果您在子包含中调用 set_memory_limit,它将应用于整个脚本。包含不是任何类型的单独进程,而只是 PHP 解释器查找代码的另一个地方。对于解释器来说,无论包含多少个文件,都有一个脚本。

唯一的例外是当您使用 http:// URL 包含文件时。即使它指向本地主机,它也会被视为远程请求。为此,将启动一个新请求来解析该文件,启动一个新的 PHP 进程,该进程有自己的内存限制。但这种做法非常不寻常。

旧答案:

我不确定您在这种情况下所说的“完整请求”是什么意思,但答案可能是否定的。内存限制仅适用于 PHP 脚本及其分配/使用的内存。例如,它不适用于使用 exec() 调用的任何外部二进制文件。

Update re acmatos' comment: Yes, if you call set_memory_limit in a child include, it will apply to the whole script. An include is not a separate process of any kind, but simply another place for the PHP interpreter to look for code. To the interpreter, there is one script, no matter how many files you include.

The only exception is when you include a file using a http:// URL. That is treated like a remote request even though it points on localhost. For that, a new request is started to parse that file, a new PHP process is started, which has its own memory limit. This practice is highly unusual though.

Old answer:

I'm not sure what you mean by "complete request" in this context, but the answer is probably no. The memory limit applies to the PHP script only and memory allocated/used by it. It does not apply to any external binaries called using exec() for example.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文