繁体   English   中英

PHP memory_limit是否为PHP预分配内存

[英]Does PHP memory_limit pre-allocate memory to PHP

我们网站上的一些页面达到了PHP内存限制,目前设置为128MB。 当请求将内存限制提高到256MB时,我们的托管公司的工程师告诉我们:

在我们的服务器上“平均请求需要少于64MB的RAM”

“将内存限制转移到256MB实际上会创建192M内存的平均分配,而不会在大多数请求中使用”

这是正确的,memory_limit数量实际上是预先分配的,对于我们的大多数请求,是否会浪费192MB?

谢谢!

来自: http//php.net/manual/en/ini.core.php#ini.memory-limit

这将设置允许脚本分配的最大内存量(以字节为单位)。 这有助于防止编写糟糕的脚本占用服务器上的所有可用内存。 请注意,要没有内存限制,请将此指令设置为-1。

根据我的经验,许多网站需要超过128M。

不,不是的。 它设置允许脚本分配的最大值。 它不会自行分配。 使用php memory_get_usage函数测试它。

资源

不可以。您无法使用memory_limit预分配内存。

请参阅这篇文章作为参考: 如何在PHP中为数组预先分配内存?

也许他的意思是,通过在全球范围内将限制提高到256M,平均请求达到了192M。 这意味着有很多人达到荒谬的低64M限制。

关于PHP内存限制的要点是“防止编写糟糕的脚本以占用服务器上的所有可用内存”,而不是“预先分配内存大小”。

例如,从PHP5.6源代码它只是一个根据需要强制执行的硬帽 - 或者说“脚本可能消耗的最大内存量”。

zend_mm_safe_error(heap, "Allowed memory size of %ld bytes exhausted (tried to allocate %ld bytes)", heap->limit, size);

参考: http//jpauli.github.io/2014/07/02/php-memory.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM