2014-11-21 39 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

相關問題