2010-10-27 46 views
3

當服務器忙或擁擠,或類似的東西時,是否可以使用php將用戶重定向到頁面i.e. busy.php?謝謝:))重定向用戶,如果服務器過度擁擠或使用PHP繁忙?

+0

難道不取決於更好地添加第二臺服務器並使用負載均衡器來分配它們之間的負載,而不是告訴用戶他現在不能使用您的站點? – Gordon 2010-10-27 09:41:00

+0

雖然這可能是一個有用的建議,但你實際上告訴他「獲得另一臺服務器」,我認爲這不是他想要的。 – Fusyion 2010-10-27 10:14:39

+1

這種方法的問題在於,如果服務器很忙併且因此緩慢執行PHP,則檢測到這一點並重定向用戶的PHP也將緩慢執行。 – James 2010-10-27 10:20:42

回答

1

您可以使用PHP內部函數,例如memory-get-usage http://php.net/manual/de/function.memory-get-usage.php或訪問一個Shell腳本,它提供有關服務器當前負載的某種信息。然後根據該信息通過標題設置重定向。

但是,請記住,如果您的服務器發生故障,很可能PHP腳本將不會執行並且不會發生重定向。因此,根據您的基礎架構,您可以通過輔助服務器(也許是負載均衡器)處理這個問題。

如果您可以縮小導致故障的最可能原因,請嘗試在那裏抓取它,例如,如果您的MySQL連接失敗,抓取並導引用戶到您的「繁忙頁面」。

+0

這不是函數只是告訴你當前PHP進程的內存使用情況,而不是系統總數? – JAL 2010-10-28 22:30:13

1

最好的形式給出了是你的設置類使用負載平衡器,但爲了以防萬一,你可以重定向到一個繁忙的頁面(即不能使用DB連接在所有)這一段代碼:

class [...] { 
    [...] 
    public function connect(){ 
     $this->conn = @mysql_connect ([...]) 
      or $this->dbError("Failed MySQL connection"); 
     [...] 
    } 

    private function dbError($msg){ 
     include("busy.php"); 
     die(); 
    } 
} 
+0

嗯,寧願嘗試/取和重定向到一個現有的靜態頁面(臨時重定向,以防止SEO混亂) – Hannes 2010-10-27 10:31:20

+0

代替30X重定向,我忙頁面使用「HTTP 503服務暫時不可用」和「重發後:3600」也就是說,在我看來,更好,因爲防止忙頁面進行索引 – Coquevas 2010-10-27 11:12:04

4

我第二個using a dedicated load balancer而不是用PHP做這個。但如果這是不是出於某種原因的選項,你可以用sys_getloadavg嘗試:

返回表示系統平均負載(進程在系統中運行隊列的數量)在過去的1,5和15三個樣本分鐘。從手動

實施例:

<?php 
$load = sys_getloadavg(); 
if ($load[0] > 80) { 
    header('HTTP/1.1 503 Too busy, try again later'); 
    die('Server too busy. Please try again later.'); 
} 
?> 

implementation in php-src使用getloadavg罩下。所以返回的值與運行cat /proc/loadavguptime時的值相同。

Linux load averages一個簡單的解釋可以在http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages找到:

在多處理器系統中,負載是相對於可用的處理器核的數量。 「100%利用率」標誌是1.00的單核系統,2.00上,在雙核,4.00上的四核等

另見https://superuser.com/questions/23498/what-does-load-average-mean-on-unix-linux

+0

我想知道,如果這真的有效。我得到0.80到1.5的值,是80的相關值?這個最大值是多少?我找不到一個很好的定義,網絡 – Rumplin 2017-07-19 23:02:21

+0

@Rumplin我已經 – Gordon 2017-07-20 06:44:31

+0

感謝更新了答案,那說明我的8核心的機器上我號上 – Rumplin 2017-07-20 07:34:54