當服務器忙或擁擠,或類似的東西時,是否可以使用php將用戶重定向到頁面i.e. busy.php
?謝謝:))重定向用戶,如果服務器過度擁擠或使用PHP繁忙?
回答
您可以使用PHP內部函數,例如memory-get-usage http://php.net/manual/de/function.memory-get-usage.php或訪問一個Shell腳本,它提供有關服務器當前負載的某種信息。然後根據該信息通過標題設置重定向。
但是,請記住,如果您的服務器發生故障,很可能PHP腳本將不會執行並且不會發生重定向。因此,根據您的基礎架構,您可以通過輔助服務器(也許是負載均衡器)處理這個問題。
如果您可以縮小導致故障的最可能原因,請嘗試在那裏抓取它,例如,如果您的MySQL連接失敗,抓取並導引用戶到您的「繁忙頁面」。
這不是函數只是告訴你當前PHP進程的內存使用情況,而不是系統總數? – JAL 2010-10-28 22:30:13
最好的形式給出了是你的設置類使用負載平衡器,但爲了以防萬一,你可以重定向到一個繁忙的頁面(即不能使用DB連接在所有)這一段代碼:
class [...] {
[...]
public function connect(){
$this->conn = @mysql_connect ([...])
or $this->dbError("Failed MySQL connection");
[...]
}
private function dbError($msg){
include("busy.php");
die();
}
}
我第二個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/loadavg
或uptime
時的值相同。
的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
- 1. 進度條保持用戶繁忙,直到從服務器加載頁面
- 2. 繁忙WCF服務策略
- 3. PHP重定向用戶如果登錄
- 4. PHP檢查爲最不繁忙的MySQL服務器
- 5. PHP如何使用Apache服務器重定向到另一頁?
- 6. XCode4跳轉條過度擁擠
- 7. 如何用PHP服務器的最低使用率(繁忙)備份PHP中的大型MySQL數據庫?
- 8. 使用Ajax瀏覽器「繁忙狀態」
- 9. PHP的重定向,如果用戶已經驗證或不
- 10. 如何通過.htaccess將服務器重定向到服務器?
- 11. 我們如何確定Azure搜索服務如何繁忙?
- 12. 使服務器繁忙的UDP cron作業
- 13. 過濾器的Angularjs繁忙指示器
- 14. 如何在服務繁忙時控制WCF服務響應
- 15. 未在服務器上使用WebView PHP重定向
- 16. 用PHP重定向用戶
- 17. PHP中的服務器端重定向
- 18. 如果用戶使用PHP登錄頁面,我該如何重定向用戶?
- 19. 過濾器:客戶端和服務器端的重定向
- 20. 如何使用繁忙指示在WPF
- 21. 「繁忙」效果覆蓋
- 22. 我如何將用戶重定向到使用python的其他服務器?
- 23. 如何在後臺繁忙時使用進度條
- 24. PHP繁重的任務調度
- 25. PHP重定向用戶
- 26. 如何根據cpu /內存使用率或掛起的請求返回503服務器繁忙?
- 27. iOS啓用橫幅繁忙微調器?
- 28. 重定向過期用戶
- 29. 如果http重定向到https,將重定向觸發器,如果使用HSTS?
- 30. 301或302使用PHP重定向
難道不取決於更好地添加第二臺服務器並使用負載均衡器來分配它們之間的負載,而不是告訴用戶他現在不能使用您的站點? – Gordon 2010-10-27 09:41:00
雖然這可能是一個有用的建議,但你實際上告訴他「獲得另一臺服務器」,我認爲這不是他想要的。 – Fusyion 2010-10-27 10:14:39
這種方法的問題在於,如果服務器很忙併且因此緩慢執行PHP,則檢測到這一點並重定向用戶的PHP也將緩慢執行。 – James 2010-10-27 10:20:42