處理運(yùn)行時(shí)間長(zhǎng)的腳本以及內(nèi)容大的首頁
發(fā)表時(shí)間:2023-08-14 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]處理運(yùn)行時(shí)間長(zhǎng)的腳本以及內(nèi)容大的主頁腳本運(yùn)行時(shí)間的最長(zhǎng)限制默認(rèn)值為90秒,這是防止無限次循環(huán)的進(jìn)行,是很有用的防護(hù)措施。不過,在一些特殊場(chǎng)合中,你也許面臨著腳本運(yùn)行時(shí)間大于90秒的場(chǎng)合,例如,當(dāng)你的...
處理運(yùn)行時(shí)間長(zhǎng)的腳本以及內(nèi)容大的主頁
腳本運(yùn)行時(shí)間的最長(zhǎng)限制默認(rèn)值為90秒,這是防止無限次循環(huán)的進(jìn)行,是很有用的防護(hù)措施。不過,在一些特殊場(chǎng)合中,你也許面臨著腳本運(yùn)行時(shí)間大于90秒的場(chǎng)合,例如,當(dāng)你的腳本生成了一個(gè)十分巨大的主頁時(shí),你肯定不希望主頁顯示到一半時(shí)間就過了限制時(shí)間。那么你可以利用Server對(duì)象的ScriptTimeout屬性來自己設(shè)定你希望的限制時(shí)間。例如下例:
<% Server.ScriptTimeOut=150 %>
<HTML>
<Head><title>落星</title></head>
<body>
<%
randomize
starx=60
for k=1 to 10
nextsecond=dateadd(“s”,10,time)
do while time<nextsecond
loop
Starx=starx+3*rnd()-1
for i=1 to starx
Response.Write(“ ”)
Next
Response.Write(“*<p>”)
Next
%>
</body>
</html>
這個(gè)腳本將會(huì)十分緩慢的顯示落星,每隔10秒在相應(yīng)位置顯示一個(gè)星號(hào)。(見圖14.2)。
由于在頁首限定了150秒的限制時(shí)間,這個(gè)腳本才可能正常執(zhí)行結(jié)束。
你自然也可以利用Server.ScriptTimeout屬性來將限制時(shí)間減少到90秒以內(nèi),而且你還可以在Internet Service Manager中的Application Configuation對(duì)話框中的App Options頁中修改ScriptTimeout屬性,如果你將其改為-1,那么你的腳本將永遠(yuǎn)不會(huì)過期。
允許腳本執(zhí)行很長(zhǎng)時(shí)間就會(huì)在你網(wǎng)站資源上創(chuàng)建一個(gè)非常重要的管道,實(shí)際上,一個(gè)腳本也許會(huì)執(zhí)行到甚至發(fā)出執(zhí)行請(qǐng)求的用戶都已經(jīng)離開的時(shí)候,這種情況下,這種腳本的繼續(xù)執(zhí)行對(duì)任何人都沒有好處。幸運(yùn)的是,Response對(duì)象的屬性可以有所助益,IsClientConnected屬性可以檢查瀏覽器和服務(wù)端是否仍然在連接。你可以利用這個(gè)屬性將用戶已經(jīng)離開情況下的腳本停止執(zhí)行。例如,下面這個(gè)例子會(huì)一直顯示到連接終止。
<HTML>
<HEAD><TITLE>Obnoxious Page</title></head>
<body>
<%
while 1=1
Response.Write(“Hello! Magicw3 Com.”)
if NOT Response.IsClientConnected THEN Response.End
WEND
%>
</body>
</HTML>
請(qǐng)注意IsClientConnected屬性僅僅在上一個(gè)Response.write調(diào)用時(shí)瀏覽器仍然處于連接狀態(tài)才有效。如果你運(yùn)行了一個(gè)運(yùn)行時(shí)間很長(zhǎng)的腳本程序而沒有輸出任何東西,那么這個(gè)屬性也就不會(huì)產(chǎn)生作用。