2013-08-07 36 views
2

我今天碰到一些代碼,它被添加到登錄後操作的一個網站。使用System.Threading.Thread.Sleep(x)減慢機器人擊中網站?

System.Threading.Thread.Sleep(3000); //slow down bots 

(值得一提的是,應用程序已經限制迫使用戶點擊了頁面之前失敗的嘗試。)

我在想,如果睡覺的系統線程實際上是做什麼的評論顯示,放慢試圖訪問該網站的漫遊器?

如果這確實減慢了機器人,它是否足夠有效值得實施?

謝謝。

+1

這個機器人是否會讓你連續擊中你?或平行?如果它發出重疊請求,它將不起作用,除非在服務器上佔用線程(這是壞的) –

+0

它會減慢機器人速度。它讓用戶不滿。你選擇是否要實施它。 –

+0

但是它仍然會放慢一點,因爲IIS不會立即啓動新線程,並且有線程上限......所以我認爲它會減慢機器人速度。 – xanatos

回答

1

不,它不會。原因是機器人端的登錄請求(可能)是異步的。請求發送後,機器人只是釋放他的線程,並繼續前進,直到你的服務器響應。

另一方面,您正在鎖定自己的線程,等待,而不是處理來自合法用戶的其他請求。你本質上是在腳下射擊自己。

2

Thread.Sleep在服務器軟件中沒有地位,它的使用可能導致ThreadPool餓死,導致其他無關的請求由於ThreadPool創建新線程的惰性而變得呆滯。

如果你真的想在無所事事的時候等待,那就異步做吧。我不明白爲什麼這可能有幫助。如果您的網頁請求緩慢投放,您會被某些搜索引擎記錄下來。