2014-11-21 33 views
1

在php中,我想在进一步处理之前提供自定义的错误消息。服务器过载时发送什么头文件代码?

这里是我有什么

if($overloaded==true){ 
    header('HTTP/1.0 503 Service Temporarily Unavailable'); 
    header('Status: 503 Service Temporarily Unavailable'); 
    header('Retry-After: 300');//300 seconds 
    die(); 
} 

来自:How do I make php page return a 503 error (or anything non-200)

关于503服务上w3.org不可用

Note: The existence of the 503 status code does not imply that a 
    server must use it when becoming overloaded. Some servers may wish 
    to simply refuse the connection. 

来自:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.4

我的服务器过载时应该如何提供HTTP请求?

+0

状态代码在这些情况下是相当意见。我的问题是你如何确定服务器过载?如果你有某种方式来确定你的服务器实际上是过载的,503似乎是一个明显的选择,但是如果过载是由超时决定的话,504也可以工作。 – Devon 2014-11-21 17:23:08

+0

你是对的,它是基于意见的,但我在这种情况下寻找多种选择。我不想在长时间的等待时间后收到一些错误消息 – RafaSashi 2014-11-21 17:25:22

+1

状态码与代码或等待时间没有真正的相关性。你可以发布你想要的任何状态码。由客户来解释这个状态代码是什么,如果一个状态代码不完全符合你的要求,你可以为最终用户创建自己的指导方针。标准化的状态代码只是客户在连接到应用程序/站点时能够普遍识别特定问题的简单方法。 – Devon 2014-11-21 17:31:53

回答

2

如果你想是准确的,你真的只有2种选择,据我所知,这是503或500

500意味着你无法满足对意外情况的要求/原因。

503意味着由于服务器暂时超载或维护,您无法完成请求。

从我所知道的错误500是一个非常通用的错误和503是最准确的,我会高度建议您使用超过500.准确性总是最好的。

+0

谢谢。我只是试图澄清“有些服务器可能希望简单地拒绝连接”,因为它听起来不像5xx错误 – RafaSashi 2014-11-21 17:30:28

+0

,并且在我直接发送503的情况下,我应该如何执行头部处理('Retry-After: 300'); // 300秒 – RafaSashi 2014-11-21 17:31:29

+1

看看这个问题在这里http://stackoverflow.com/questions/3764075/retry-after-http-response-header-does-it-affect-anything - 请记住答案是从2010年起。 – 2014-11-21 17:32:57