|
<<<
voltar
::
ASP ::
Temporizador
Quem
quer fazer um site que faz um update automático,
rapidamente encontra um problema no ASP: porque o ASP
não fica sempre ativo mas só durante o tempo que
demora rodando o script das mesmas. Normalmente
pensamos: "então deixo script rodar sempre e mantenho o
browser sempre aberto!!?!?". Não me parece uma solução
muito prática ;-) Aqui segue uma solução mais
prática, que faz o update à página quando já passou
do tempo pretendido. O script não faz update se
ninguém visitar a página, mas se ninguém visita a pagina
porquê fazer update!?!?
Temos
dois exemplos o primeiro é mais simples, e usa variável
de aplicação. O problema deste primeiro exemplo: se o
server fizer o reset perde-se o valor. O segundo
exemplo escreve o valor para um arquivo. A vantagem
deste exemplo é poder-se usar mais do que um
temporizador dinamicamente.
Ele funciona
assim: A função check vê se a variável de aplicação
existe e se tem alguma coisa. Caso negativo vai correr o
script. A segunda condição é se já passou mais de
que o tempo que nós programamos.
Função Check
tem dois parâmetros - o nome que damos a
variável de aplicativo - o tempo de
comparação.
Função VB
datediff tem varias hipóteses. O "n" é para
minutos, mas veja mais abaixo (na tabela final) todas as
hipóteses.
<% function
check(Temporizador,T_comparacao) If
Application(Temporizador)="" Or datediff
("n",Application(Temporizador),now())> T_comparacao
then check=true Application.Lock Application(Temporizador)
=
Now() Application.Unlock else check=false end
if end function Response.write Application("t2")if
check("t2",1) then Response.write "Done" end
if %>
o Segundo
exemplo funciona assim: o arquivo time.asp contém a
variável da hora e dia (Datum). O arquivo compare.asp
vê se a data e hora são diferentes e faz o update
(subrotina write) a time.asp e a outra coisa que
pretendermos fazer o update.
arquivo :
time.asp
<%tnow="23-04-2001
12:52:04" %> arquivo :
compare.asp <!--#include
file="time.asp"--> <% if datediff
("n",tnow,now())>0 then Call Write end
ifsub Write pat=Server.mappath("time.asp") Set
objfso=
CreateObject("Scripting.FileSystemObject") objfso.createtextfile
pat set objf=objfso.getfile(pat) set
objtxt=objf.openastextstream(2, -2) ''O 3 e a
quantidade de horas para fazer o
update objtxt.writeline chr(60) & chr(37) &
"tnow=" & chr(34) & now() &
chr(34) objtxt.writeline chr(37) &
chr(62) objtxt.close ''Aqui pode pôr o resto do
que tem de fazer update Response.write "done" end
sub %>
|
Parâmetro |
Descrição |
|
yyyy |
Ano
|
|
q
|
Quarter
|
|
m
|
Mês |
|
y |
Dia do ano |
|
d |
Dia |
|
w |
Dia da semana |
|
ww |
Semana do ano |
|
h |
Hora |
|
n |
Minuto |
|
s |
Segundo | |