如何解决内存已满时,Apache返回200
通过检查错误日志在下面找到:
PHP致命错误:允许的2147483648字节内存已用尽(尝试分配4096字节)
因此,我尝试将其复制到我的本地设置中。因此,我所做的就是将memory_limit
更改为10 MB,并尝试手动调用API之一。在这种情况下,服务器返回的500是正确的(即显示上面的错误并显示500 HTTP状态)。
但是现在,如果我将其设置为1MB,那么它将返回200 HTTP状态(不处理任何事情,我在第一行显示简单消息。)。那么,其背后的原因是什么以及如何解决呢?
简而言之,如果服务器为10 MB限制返回500,那么它也应为1MB正确返回500?
如果无法处理请求,是否有可能使apache返回默认的HTTP状态?如果是,我们如何知道默认的HTTP状态以及如何更改它?
PHP版本:7.0.33
Apache版本:2.4.39
内存限制为1 MB
限制为10 MB
更新
我没有发布代码,因为我认为这是无关紧要的,因为服务器上的流量过大时发生了上述问题,并且对于我拥有的任何api都发生了。我们有一个代金券销售功能,当它开始时,我们收到太多的请求,在此期间,我们遇到了上面的内存错误,而其他时候我们没有遇到。所以我的想法是因为可能没有内存可以处理请求,因此服务器返回默认值200。为此,我在本地设置中将内存限制设置得太低。
所以问题是,如果没有内存来处理请求,服务器如何强制返回500。
解决方法
在中等强度的情况下,PHP发出有关内存使用的错误之前,PHP可能响应为200。 HTTP状态在任何主体之前都会通过网络发出。
如果将其设置得足够低,则脚本可能不够远,无法发出状态和标头。
,我在apache中遇到了类似的问题。
如果它无法正常工作,您是否尝试过在干净的Apache上启动此api?
您是否通过正确的配置检查了有关内存的规则?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。