2010-01-22 34 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

相关问题