2010-01-22 60 views
0

我寫了一個do while循環量3秒腳本不會停止,同時關閉瀏覽器或單擊中止

完全有7000位調用網頁中的WebCrawler的...我分析數據並保存在我的數據庫。

有時因爲腳本加載了很長一段時間,我得到了在瀏覽器超時,

但在後臺我還在繼續。我在我的數據庫中看到這一點。

我可以預防這種情況嗎?現在只要停止網絡服務器就可以了。

謝謝,最好的問候。

+0

根據你用於發送HTTP請求的類別,你可以設置一個'Timeout'屬性。 – 2010-01-22 10:15:33

+0

它是什麼服務器? Asp.net開發服務器或IIS – 2010-01-22 10:17:02

+0

實際上我的本地從視覺工作室,我上傳後將IIS 6 – 2010-01-22 10:20:06

回答

0

您的網頁正在啓動服務器端進程。殺死你的瀏覽器或關閉它並不會阻止它。這聽起來像一個網頁來控制這是錯誤的方法,你應該看看像WinForms/WPF應用程序的連接形式的應用程序。有辦法讓這個與ASP.NET一起工作,但它們不會很簡單。我認爲你剛剛選擇了錯誤的技術。

+0

好的,這將是一個痛苦...我希望只有一個解決方案:)...但我必須做一個網絡表格,因爲它必須開始,如果我去一個特定的網址.. – 2010-01-22 10:23:06

+0

在這種情況下,我認爲你將不得不在服務器上進行異步操作,並讓Web請求啓動並停止這個異步過程。我告訴過你,這不會很簡單... – 2010-01-22 10:25:51

0

從網頁開始這樣一個密集的,長期運行的過程幾乎從來都不是一個好主意。有很多原因,但主要原因是:

1)如果您在瀏覽器中得到超時(這是您的方案),您收集的數據可能不會顯示。

2)如果在瀏覽器中進行刷新,會發生什麼情況?它會不會重新啓動整個過程?如果攻擊者希望綁定所有服務器資源,那麼這是攻擊者的一個簡單目標。

3)您正在抓取的數據是否真的可能發生變化,以至於您需要「實時」抓取?運行爬網的後臺定時作業同樣適用於99%的情況,而您的前端僅顯示數據庫的內容。

我會認真地推薦您重新考慮您的抓取策略,以便更可控和穩定。

+0

好的,謝謝。它在一個封閉的區域,在這種情況下安全並不重要,但我當然同意。 爲什麼這個片段不起作用?如果(!Response.IsClientConnected)返回,則返回 ; – 2010-01-22 10:32:36

+0

HTTP本質上是無狀態的。瀏覽器發送一個請求,其中包含* all *服務器需要的數據,以便理解和處理它。服務器然後發送響應。除此之外,瀏覽器和服務器之間沒有關係。這全是煙霧和鏡子。 :) – ZombieSheep 2010-01-22 10:58:13

+0

好吧,爲什麼這個屬性存在? – 2010-01-22 13:15:21

相關問題