📄 14-3.cfm.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>处理运行时间长的脚本以及内容大的主页</title>
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
</head>
<body>
<font SIZE="5"><b>
<p ALIGN="JUSTIFY">处理运行时间长的脚本以及内容大的主页</p>
</b></font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY"></font><font SIZE="3">脚本运行时间的最长限制默认值为</font><font
FACE="宋体" SIZE="3">90</font><font SIZE="3">秒,这是防止无限次循环的进行,是很有用的防护措施。不过,在一些特殊场合中,你也许面临着脚本运行时间大于</font><font
FACE="宋体" SIZE="3">90</font><font SIZE="3">秒的场合,例如,当你的脚本生成了一个十分巨大的主页时,你肯定不希望主页显示到一半时间就过了限制时间。那么你可以利用</font><font
FACE="宋体" SIZE="3">Server</font><font SIZE="3">对象的</font><font FACE="宋体"
SIZE="3">ScriptTimeout</font><font SIZE="3">属性来自己设定你希望的限制时间。例如下例:</font><font
FACE="宋体" SIZE="3"> </p>
<p ALIGN="JUSTIFY"><% Server.ScriptTimeOut=150 %></p>
<p ALIGN="JUSTIFY"><HTML></p>
<p ALIGN="JUSTIFY"><Head><title></font><font SIZE="3">落星</font><font
FACE="宋体" SIZE="3"></title></head></p>
<p ALIGN="JUSTIFY"><body></p>
<p ALIGN="JUSTIFY"><% </p>
<p ALIGN="JUSTIFY">randomize</p>
<p ALIGN="JUSTIFY">starx=60</p>
<p ALIGN="JUSTIFY">for k=1 to 10</p>
<p ALIGN="JUSTIFY">nextsecond=dateadd(</font><font SIZE="3">“</font><font FACE="宋体"
SIZE="3">s</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3">,10,time)</p>
<p ALIGN="JUSTIFY">do while time<nextsecond</p>
<p ALIGN="JUSTIFY">loop</p>
<p ALIGN="JUSTIFY">Starx=starx+3*rnd()-1</p>
<p ALIGN="JUSTIFY">for i=1 to starx</p>
<p ALIGN="JUSTIFY">Response.Write(</font><font SIZE="3">“</font><font FACE="宋体"
SIZE="3">&nbsp;</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3">)</p>
<p ALIGN="JUSTIFY">Next</p>
<p ALIGN="JUSTIFY">Response.Write(</font><font SIZE="3">“</font><font FACE="宋体"
SIZE="3">*<p></font><font SIZE="3">”</font><font FACE="宋体" SIZE="3">)</p>
<p ALIGN="JUSTIFY">Next</p>
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY"></body></p>
<p ALIGN="JUSTIFY"></html></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">这个脚本将会十分缓慢的显示落星,每隔</font><font
FACE="宋体" SIZE="3">10</font><font SIZE="3">秒在相应位置显示一个星号。</font><font
FACE="宋体" SIZE="3">(</font><font SIZE="3">见图</font><font FACE="宋体" SIZE="3">14.2)</font><font
SIZE="3">。</font><font FACE="宋体" SIZE="3"> </p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">由于在页首限定了</font><font
FACE="宋体" SIZE="3">150</font><font SIZE="3">秒的限制时间,这个脚本才可能正常执行结束。</p>
</font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY"></font><font SIZE="3">你自然也可以利用</font><font
FACE="宋体" SIZE="3">Server.ScriptTimeout</font><font SIZE="3">属性来将限制时间减少到</font><font
FACE="宋体" SIZE="3">90</font><font SIZE="3">秒以内,而且你还可以在</font><font
FACE="宋体" SIZE="3">Internet Service Manager</font><font SIZE="3">中的</font><font
FACE="宋体" SIZE="3">Application Configuation</font><font SIZE="3">对话框中的</font><font
FACE="宋体" SIZE="3">App Options</font><font SIZE="3">页中修改</font><font
FACE="宋体" SIZE="3">ScriptTimeout</font><font SIZE="3">属性,如果你将其改为</font><font
FACE="宋体" SIZE="3">-1</font><font SIZE="3">,那么你的脚本将永远不会过期。</p>
</font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY"></font><b><font SIZE="3">图</font><font FACE="宋体" SIZE="3">14.2 </font><font
SIZE="3">落星的例子</p>
<p><img SRC="../Image113.gif" tppabs="http://210.74.168.175/guide/asp/Image113.gif" WIDTH="532" HEIGHT="350" ALIGN="LEFT"> </font></b><font
FACE="宋体" SIZE="3"></p>
<p><b><font SIZE="3"> </font></b></p>
<p><b><font SIZE="3"> </font></b></p>
<p><b><font SIZE="3"> </font></b></p>
<p><b><font SIZE="3"> </font></b></p>
<p><b><font SIZE="3"> </font></b></p>
<p><b><font SIZE="3"> </font></b></p>
<p><b><font SIZE="3"> </font></b></p>
<p><b><font SIZE="3"> </font></b></p>
<p><b><font SIZE="3"> </font></b></p>
<p><b><font SIZE="3"> </font></b></p>
<p><b><font SIZE="3"> </font></b></p>
<p><b><font SIZE="3"> </font></b></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">允许脚本执行很长时间就会在你网站资源上创建一个非常重要的管道,实际上,一个脚本也许会执行到甚至发出执行请求的用户都已经离开的时候,这种情况下,这种脚本的继续执行对任何人都没有好处。幸运的是,</font><font
FACE="宋体" SIZE="3">Response</font><font SIZE="3">对象的属性可以有所助益,</font><font
FACE="宋体" SIZE="3">IsClientConnected</font><font SIZE="3">属性可以检查浏览器和服务端是否仍然在连接。你可以利用这个属性将用户已经离开情况下的脚本停止执行。例如,下面这个例子会一直显示到连接终止。</p>
</font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY"><HTML></p>
<p ALIGN="JUSTIFY"><HEAD><TITLE>Obnoxious Page</title></head></p>
<p ALIGN="JUSTIFY"><body></p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">while 1=1</p>
<p ALIGN="JUSTIFY">Response.Write(</font><font SIZE="3">“</font><font FACE="宋体"
SIZE="3">Hello! Magicw3 Com.</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3">)</p>
<p ALIGN="JUSTIFY">if NOT Response.IsClientConnected THEN Response.End</p>
<p ALIGN="JUSTIFY">WEND</p>
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY"></body></p>
<p ALIGN="JUSTIFY"></HTML></p>
</font><font SIZE="3">
<p ALIGN="JUSTIFY">请注意</font><font FACE="宋体" SIZE="3">IsClientConnected</font><font
SIZE="3">属性仅仅在上一个</font><font FACE="宋体" SIZE="3">Response.write</font><font
SIZE="3">调用时浏览器仍然处于连接状态才有效。如果你运行了一个运行时间很长的脚本程序而没有输出任何东西,那么这个属性也就不会产生作用。</p>
</font>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -