服务器在长时间运行的脚本中无响应

时间:2013-06-20 16:41:06

标签: php asp.net iis-7

我在IIS7上运行了一个网站。为了更好地解释我的问题,我将在一个简单的场景中呈现它。假设我有两个网页, index.php report.php ,每个内容如下:

的index.php

<?php echo "Hello World"; ?>

report.php

<?php sleep(60); //simulate a long running script like generating reports. ?>

index.php 是我们的电子商务系统的主页,访问者将访问该主页, report.php 是管理视图中的人员报告的页面喜欢(最有可能在白天)。问题是当查看生成几分钟的报告时,整个服务器将无响应。查看 index.php 的访问者在报告完成生成之前不会得到任何回复。这也适用于ASP.NET。有没有解决方法呢?

1 个答案:

答案 0 :(得分:0)

iis6&amp;中的这个explains threading 7.实质上,新线程处理每个新的传入请求。因此,使单个页面休眠一段时间对其他页面的处理没有影响。我用2页测试了这个。

<强> page.aspx:

<%@ Page Language="C#" %>
<%=DateTime.Now.ToString() %>

<强>的Index.aspx:

<%@ Page Language="C#" %>
<%=DateTime.Now.ToString() %>
<% System.Threading.Thread.Sleep(10000); %>

调用index.aspx后,可以重复调用page.aspx&amp;返回每个请求的当前时间,而对index.aspx的第一个请求正在休眠。

如果某些内容导致您的服务器阻止请求,则可能是您网站上使用的共享资源。在上面的示例中,如果index.aspx请求对资源(例如文件或数据库)的独占访问权限,则对page.aspx的多个请求必须等到index.aspx完成&amp;发布了资源。