yobyfed
asked on
pause asp script
Im working on a server push concept for a project im working on.
However i need to pause the script for a certain amount of seconds, I can do this with a do : loop but this consumes 100% cpu.
Does anyone have a method that will not use all the CPU?
However i need to pause the script for a certain amount of seconds, I can do this with a do : loop but this consumes 100% cpu.
Does anyone have a method that will not use all the CPU?
Don't think you can do it....
Use the function to introduce delay in your scripts..
<%
' ** SUBROUTINE TO INTRODUCE DELAY **
Sub Delay(DelaySeconds)
' Counter initialized to 0
SecCount = 0
' variable for comparison initialized to 0
Sec2 = 0
'Loop
While SecCount < DelaySeconds + 1
'Each time the loop is executed, sec1 variable holds the value of the curent second
Sec1 = Second(Time())
'Each time the loop is executed,the check is performed
If Sec1 <> Sec2 Then
Sec2 = Second(Time())
'Both these values are incremented each second only.
SecCount = SecCount + 1
End If
Wend
End Sub
' ** Introduce delay of 5 seconds **
CALL Delay(5)
%>
Hope this helps..
Cheers!!
<%
' ** SUBROUTINE TO INTRODUCE DELAY **
Sub Delay(DelaySeconds)
' Counter initialized to 0
SecCount = 0
' variable for comparison initialized to 0
Sec2 = 0
'Loop
While SecCount < DelaySeconds + 1
'Each time the loop is executed, sec1 variable holds the value of the curent second
Sec1 = Second(Time())
'Each time the loop is executed,the check is performed
If Sec1 <> Sec2 Then
Sec2 = Second(Time())
'Both these values are incremented each second only.
SecCount = SecCount + 1
End If
Wend
End Sub
' ** Introduce delay of 5 seconds **
CALL Delay(5)
%>
Hope this helps..
Cheers!!
Isn't that the loop he already discussed....100% CPU usage?
or javascript SetTimeout function
<SCRIPT LANGUAGE="JavaScript">
function sleep()
{
setTimeout("sleep()", 500);
}
</SCRIPT>
function sleep()
{
setTimeout("sleep()", 500);
}
</SCRIPT>
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
This is unlikely to have the effect that you want.
Even with buffering turned off the data from you page is not sent immediatly until enough data is available to form a full HTTP message (I think this is 64K) or the page execution completes. Consequently by introducing a delay in the page execution it will not look like server push unless each block is certain to exceed this value.
It also will increase the load on your server and reduce the maximum number of concurrent users supported because the port will be open that much longer.
I'd suggest that a better approach may be to send the whole page at once and use javascript to progressively display it.
HTH
Steve
Even with buffering turned off the data from you page is not sent immediatly until enough data is available to form a full HTTP message (I think this is 64K) or the page execution completes. Consequently by introducing a delay in the page execution it will not look like server push unless each block is certain to exceed this value.
It also will increase the load on your server and reduce the maximum number of concurrent users supported because the port will be open that much longer.
I'd suggest that a better approach may be to send the whole page at once and use javascript to progressively display it.
HTH
Steve
ASKER
ap_sajith: The loop will consume all resources
YZlat: ASP does not support the setTimeout function, as ASP is terminated once the script ends.
anderson22: Do you know if using the wsh.sleep function will pause only the current document, or the whole application?, for the single user, or all users connected?
YZlat: ASP does not support the setTimeout function, as ASP is terminated once the script ends.
anderson22: Do you know if using the wsh.sleep function will pause only the current document, or the whole application?, for the single user, or all users connected?
ASKER
mouatts: The reason for this approach is for a web MSN clone im working on, I want to try and make it seemless server push rather than ugly old client pull.
I am able to successfully replicate this using ap_sajith's method, However it takes up too much resources.
I am able to successfully replicate this using ap_sajith's method, However it takes up too much resources.
>However it takes up too much resources.
Well it will because it is constantly doing something.
The only way that you can introduce a delay without chewing up the processor is if a timer is set that prevents execution of the thread. As you cannot delay the actual thread that is processing the ASP page you will need to shell out to create a thread that can be suspended (ie something along the lines of what anderson22 said).
I've had a look at MSN and I can't see anything that looks like server push?
Steve
Well it will because it is constantly doing something.
The only way that you can introduce a delay without chewing up the processor is if a timer is set that prevents execution of the thread. As you cannot delay the actual thread that is processing the ASP page you will need to shell out to create a thread that can be suspended (ie something along the lines of what anderson22 said).
I've had a look at MSN and I can't see anything that looks like server push?
Steve
The sleep, will cause the current thread to pause. If you setup your asp application to run in an isolated environment, then it will only cause the current application to sleep.
-rca
-rca
anderson22: Actually I don't think that the isolated environment is important because each page being executed will be within its own thread.
mouatts:
>>because each page being executed will be within its own thread<<
I agree. That sounds correct.
-rca
>>because each page being executed will be within its own thread<<
I agree. That sounds correct.
-rca
ASKER
Thanks alot guys, Ive managed to get it working using andersons method..
The 64k problem Ive worked out, Its only in the first chunk needs to be greater than 64k's So i send a decoy header to prevent it.
And btw, I meant MSN Messenger mouatts, soz bout that.
The 64k problem Ive worked out, Its only in the first chunk needs to be greater than 64k's So i send a decoy header to prevent it.
And btw, I meant MSN Messenger mouatts, soz bout that.