2016-05-23 30 views
0

現狀:我怎麼能發送許多請求到服務器在同一時間

我這顯示了我們所有的服務器頁面(我們將其命名他們的資源)。該列表從MS SQL數據庫獲得。 爲了向他們展示我從數組中獲取並回顯。回聲之後 - 我發送請求到每個資源以獲取其狀態(200,404,502等)。

問題:

當有10-20資源頁面加載幾秒鐘,但現在有近100個資源(並會更多)爲此頁面加載〜1分鐘。現在我的經理說我們需要每1分鐘檢查一次狀態。

所以,我的問題是 - 我怎麼能做到這一點?一般 - 我可以嗎? :)

我不需要代碼或工作解決方案,我需要一些指導,我該如何實現這一目標?要搜索什麼?讀什麼?也許有一些庫的解決方案,甚至有一些框架可以做到這一點更好,更簡單?

我已經閱讀SO一些文章和問題: http://www.w3schools.com/php/php_ajax_intro.asp Sending data from server to client? fetch data from text file and update web page every minute

而且我覺得我需要了解AJAX並使用它。但我發現的任何指導是:實時搜索,動態地從輸入中選擇一些東西,在字段中輸入時提供的建議等。

正如我看到它必須有一個像我現在有的頁面servers.php,當我加載它時,它會提取並顯示所有服務器。然後爲每個資源調用check_status.php並動態更新數據,然後每重新加載一分鐘頁面。但我不明白如何一次向所有服務器發送那麼多(〜100)請求。

編輯

我們來到這樣的:我們將運行Linux VM和運行cron作業,隨時瞭解我們的資源狀態更新。用Ajax檢查狀態的腳本很容易編寫,因爲我沒有預料到。爲了存儲日誌,我們將使用MySQL數據庫,並將編寫簡單的頁面來處理日誌。謝謝大家參與答案和評論!

+0

當然,你可以通過異步調用來做到這一點(所以同時執行所有請求,並行_)。但是有一點提示:現在已經有了一個很好的解決方案,這就是所謂的「系統監控」。流行的選擇是'zabbix'或'nagios'。看看它們,爲自己節省很多麻煩...... – arkascha

+0

你可以通過產生單獨的異步請求來實現它,但是在任何情況下,資源永遠都是無限的,網絡也是如此。總是有限制。 – ArtisticPhoenix

+0

寫函數發送請求到服務器(它包括ajax調用)並使用JavaScript輪詢每分鐘到這個函數。看到... http://stackoverflow.com/questions/4930439/call-jquery-ajax-request-each-x-minutes –

回答

1

我建議你通過cron運行這個檢查並將狀態存儲在一個mysql表中。您可以將cron設置爲每分鐘運行一次。每次檢查後更新狀態。在用戶端,只需從MySQL數據庫中獲取服務器的狀態即可。以這種方式,您將解決任何超時問題,以及您將能夠從數據庫快速獲取服務器的狀態。

+0

感謝您的輸入,我不熟悉cron(聽說過,但從未使用過)我會檢查它是否對我的任務有用。 – gofr1

+0

@ gofr1您必須檢查並使用cron執行此類任務,因爲這會自動執行腳本。 – Rehmat

+0

感謝您的輸入。請參閱編輯我的答案。 – gofr1

1

我會建議使用像coppereggUptime Robot

工具有很多更多的解決方案出來there.And它的時間和資源的浪費,以實現自己的腳本。

+0

感謝您的回答,從某種意義上來說,這確實是浪費資源,但是自己做這件事非常有趣,另一方面,像您提出的工作解決方案和工具將會更好地完成這項工作。我會看看你建議的鏈接和工具。 – gofr1

0

最簡單的方法是使用cron運行更新狀態作業,並將結果存儲在本地文件或數據庫的某處。

然後你只需要獲取結果並顯示給客戶端。