我試圖檢查一個網站是否正常運行。我目前正在使用Perl中的UserAgent庫以超時1的方式執行此操作。不過,對我而言,它仍然太慢。檢查一個網站是用Perl還是C啓動的最快方法是什麼?
我每隔五分鐘就從cron調用腳本。有很多鏈接需要檢查,腳本需要超過五分鐘才能完成執行。所以,我需要一個更有效的方法來做到這一點。它甚至可以在C.
我試圖檢查一個網站是否正常運行。我目前正在使用Perl中的UserAgent庫以超時1的方式執行此操作。不過,對我而言,它仍然太慢。檢查一個網站是用Perl還是C啓動的最快方法是什麼?
我每隔五分鐘就從cron調用腳本。有很多鏈接需要檢查,腳本需要超過五分鐘才能完成執行。所以,我需要一個更有效的方法來做到這一點。它甚至可以在C.
以下方式來加速它:
捲曲的解決方案-I http://hostname
第一行包含503或404,如果服務暫無數據或頁面沒有找到。
時間收益率本作捲曲-I http://www.google.com
real 0m0.125s
user 0m0.004s
sys 0m0.004s
這對於捲曲-I http://www.google.cmo
real 0m0.120s
user 0m0.004s
sys 0m0.004s
如果有很多的鏈接,我建議你做的節目multi-threaded或fork()它幾次。這樣,你可以期待速度的提高。
不幸的是,我的Perl不用多線程編譯,但我會檢查多進程選項 – systemsfault 2009-06-24 13:48:56
即使沒有線程化的Perl,也可以使用線程。 ``使用叉;` - http://search.cpan.org/perldoc?forks – 2009-06-24 13:51:21
噢好吧,這些知識也會對其他事情有所幫助。 Thanx Alan。但是在寫入文件時它會起作用嗎? – systemsfault 2009-06-24 13:58:10
如何使用httping?
從網絡獲取資源通常會涉及相當多的延遲。
正如Alan Haggai Alavi所建議的,您可能希望將工作分成幾個並行線程/進程。 Parallel::ForkManager
模塊的文檔甚至有一個應該能夠建立的例子。
這很慢,可能是因爲你在按順序進行。
考慮使用LWP::Parallel::UserAgent - 它將同時運行多個請求。
我不知道一大堆C(褻瀆!),也不Perl的,但我怎麼看它,我會嘗試以下方法:
2CTS
其實我試圖用wget的,它的工作速度非常快現有的網站,但不得不等待斷開的鏈接。但我也會嘗試捲曲。 – systemsfault 2009-06-24 13:50:33