增加PHP内存限制的缺点

增加PHP内存限制的缺点,php,Php,最近,我的应用程序开始抛出关于耗尽最大允许内存的致命错误。经过一些研究,我发现限制设置在.htaccess文件中,设置为64m 尝试分配的资源大约为80MB,我们能够提供这些资源,但我想问社区,增加这个变量的值是否是解决问题的好方法。 非常感谢答案取决于你的脚本在做什么:)听起来你的案例增加的幅度很小(从64 MB到80 MB,我建议坚持2的幂次,并将其增加到128MB,顺便说一句),所以对现代机器来说应该没有多大区别。但是要知道这是否是正确的做法,你需要找出为什么你需要更多的记忆 如果您的处理

最近,我的应用程序开始抛出关于耗尽最大允许内存的致命错误。经过一些研究,我发现限制设置在
.htaccess
文件中,设置为64m

尝试分配的资源大约为80MB,我们能够提供这些资源,但我想问社区,增加这个变量的值是否是解决问题的好方法。
非常感谢

答案取决于你的脚本在做什么:)听起来你的案例增加的幅度很小(从64 MB到80 MB,我建议坚持2的幂次,并将其增加到128MB,顺便说一句),所以对现代机器来说应该没有多大区别。但是要知道这是否是正确的做法,你需要找出为什么你需要更多的记忆

如果您的处理只是需要更多的内存(例如,您正在内存中处理上传的文件,或者解码大型json或xml结构,或者做一些其他占用内存的事情),那么增加您的限制是正常的

但是,如果您的应用程序存在内存泄漏或以低效的方式编写,那么提高内存限制只是掩盖问题,而不是解决问题。您可能会不断遇到这个问题,最终总是增加内存,这是不可行的


如果您不知道是什么导致了内存消耗的突然增加,我建议您使用例如。您还可以查看应用程序的最近几次更改,看看是什么导致了它。如果您可以证明这一点,那么请给脚本更多内存,否则请先尝试优化代码。

PHP的部署方式通常是一个PHP进程一个接一个地处理多个请求。在单个请求期间,脚本现在可以分配内存。最后,该内存将被释放。到现在为止,一直都还不错。现在,大多数操作系统的构建方式都是保留内存,即使在释放内存时,内存也会绑定到进程。这里的假设是,一个需要一次内存的程序将再次需要这个数量,并且保持它对进程可用比收回它更便宜。因此,在PHP部署中,可能会发生这样的情况:一个请求占用大量内存,然后内存绑定到进程,系统不再可用。此外,如果某个进程占用的内存比预期的要多得多,则可能表明存在错误。因此,对于这两件事,内存限制可以作为安全网

如果您的应用程序需要更多内存,通常可以增加限制。绝对值最大值取决于系统(
可用RAM
/
工作进程数
可能是一个粗略的公式,因为它不包括所需的其他内存),通常您应该只增加所需的数量

当然,在更改此项时,您必须记住在移动到其他系统时。通常更少的内存使用意味着更快的执行,因此您应该尝试看看是否可以优化代码



旁注:我特意简化了上面的内存模型,忽略了虚拟内存页以及操作系统如何优化这些页面

内存限制可以设置为更高的值。256-512 MB并不少见。但对于其他人来说,凯特是绝对正确的;确保你能证明这一点。