處理運行時間長的腳本以及內容大的首頁
發表時間:2023-08-14 來源:明輝站整理相關軟件相關文章人氣:
[摘要]處理運行時間長的腳本以及內容大的主頁腳本運行時間的最長限制默認值為90秒,這是防止無限次循環的進行,是很有用的防護措施。不過,在一些特殊場合中,你也許面臨著腳本運行時間大于90秒的場合,例如,當你的...
處理運行時間長的腳本以及內容大的主頁
腳本運行時間的最長限制默認值為90秒,這是防止無限次循環的進行,是很有用的防護措施。不過,在一些特殊場合中,你也許面臨著腳本運行時間大于90秒的場合,例如,當你的腳本生成了一個十分巨大的主頁時,你肯定不希望主頁顯示到一半時間就過了限制時間。那么你可以利用Server對象的ScriptTimeout屬性來自己設定你希望的限制時間。例如下例:
<% 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>
這個腳本將會十分緩慢的顯示落星,每隔10秒在相應位置顯示一個星號。(見圖14.2)。
由于在頁首限定了150秒的限制時間,這個腳本才可能正常執行結束。
你自然也可以利用Server.ScriptTimeout屬性來將限制時間減少到90秒以內,而且你還可以在Internet Service Manager中的Application Configuation對話框中的App Options頁中修改ScriptTimeout屬性,如果你將其改為-1,那么你的腳本將永遠不會過期。
允許腳本執行很長時間就會在你網站資源上創建一個非常重要的管道,實際上,一個腳本也許會執行到甚至發出執行請求的用戶都已經離開的時候,這種情況下,這種腳本的繼續執行對任何人都沒有好處。幸運的是,Response對象的屬性可以有所助益,IsClientConnected屬性可以檢查瀏覽器和服務端是否仍然在連接。你可以利用這個屬性將用戶已經離開情況下的腳本停止執行。例如,下面這個例子會一直顯示到連接終止。
<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>
請注意IsClientConnected屬性僅僅在上一個Response.write調用時瀏覽器仍然處于連接狀態才有效。如果你運行了一個運行時間很長的腳本程序而沒有輸出任何東西,那么這個屬性也就不會產生作用。