webForumDet fria alternativet

Newbie; Timer?

13 svar · 416 visningar · startad av znyder

znyderMedlem sedan dec. 2002172 inlägg
#1

Hej, jag har aldrig rört ASP.NET med har hört att detta språk har en funktion jag behöver.

Jag vill ha en timer-funktion som kollar en databas var 5:e minut.
utan att några besökare behöver aktivera scriptet.

Funkar det, om ja, finns det något kodexempel för detta?
Tack på förhand!

renholmMedlem sedan apr. 20012 266 inlägg
#2

Kika på MSDN efter klassen Timer så finns det några exempel, förslagsvis sätter du upp timerna i Application_OnStart i global.asax

GuffaMedlem sedan juni 2004533 inlägg
#3

Behöver du verkligen kolla databasen var femte minut? Nästan alla som frågar efter något sådant bara tror att de behöver göra det. Lösningen är oftast istället att hålla reda på den förra tidpunkten, och när någon behöver informationen beräkna hur lång tid som gått.

znyderMedlem sedan dec. 2002172 inlägg
#4

tänkte ha en liten auktionssajt :D

asmodieMedlem sedan jan. 2004501 inlägg
#5

Detta är er egentligen ett vanligt problem. Finns många bra anledningar att lägga in en timer.

Det du måste göra är att skapa en klass med statiska funktioner. Sedan måste du köra igång timern i app_start i global.asax.

Sök på msdn så klurar du ut det. Men klassen måste vara "static" som kör timern.

GuffaMedlem sedan juni 2004533 inlägg
#6

Vad är det i en auktions-sajt som skulle göra att du behöver kolla saker hela tiden? När ingen besöker sajten så är det väl helt ointressant om det händer något eller inte?

znyderMedlem sedan dec. 2002172 inlägg
#7

VIll ha timern så den skickar ut meddelanden i perfekt tid. Inte 1 timme senare :D

asmodie: Tack, ska kolla upp de.

GuffaMedlem sedan juni 2004533 inlägg
#8

Då behöver du ju inte ens begränsa dig till ASP.NET. Du kan göra ett program som du kör var femte minut med schemaläggaren.

znyderMedlem sedan dec. 2002172 inlägg
#9

jo, men webbhotellen gillar inte att ha program som man gjort ;D

GuffaMedlem sedan juni 2004533 inlägg
#10

Funderar nu själv på att använda den här metoden för att med jämna mellanrum försöka skicka eventuella felrapporter från noder till en huvudserver.

Det som jag funderar över är vad som händer om webbservern stänger ned webbapplikationen? Eftersom Timer-objektet ligger i global.asax så kommer ju även det objektet att försvinna då. Det måste ju innebära att timern enbart fungerar så länge webbservern låter bli att stänga ned webbapplikationen?

Mc FettoMedlem sedan nov. 20022 355 inlägg
#11

Kan du inte låta huvudservern trigga noderna då?

GladhMedlem sedan maj 20012 812 inlägg
#12

att timern enbart fungerar så länge webbservern låter bli att stänga ned webbapplikationen?

Du lär ha större problem än att ditt timer objekt har försvunnit om de stänger ner webapplikation, eftersom siten faktiskt inte är tillgängli då, vilket garanterat är ett brott mot det avtal som du har mellan dig och serverhotellet.

Jag håller dock med McFetto att en bättre lösning i detta fallet är att servern frågar klienterna via en webservice om de har någon felinformation att rapportera, men en ändå bättre lösning är att felrapporten skickas till servern direkt när felet inträffar.

- M

GuffaMedlem sedan juni 2004533 inlägg
#13

Mc Fetto skrev:

Kan du inte låta huvudservern trigga noderna då?

Visserligen, men då måste huvudservern kontakta alla noderna varje gång, oavsett om det behövs eller inte.

Gladh skrev:

att timern enbart fungerar så länge webbservern låter bli att stänga ned webbapplikationen?

Du lär ha större problem än att ditt timer objekt har försvunnit om de stänger ner webapplikation, eftersom siten faktiskt inte är tillgängli då, vilket garanterat är ett brott mot det avtal som du har mellan dig och serverhotellet.

Bara för att webbapplikationen stängs ned så stängs inte siten ned. Så fort någon gör en request så startas ju applikationen.

Gladh skrev:

Jag håller dock med McFetto att en bättre lösning i detta fallet är att servern frågar klienterna via en webservice om de har någon felinformation att rapportera, men en ändå bättre lösning är att felrapporten skickas till servern direkt när felet inträffar.

I det här faller så är det inte en bättre lösning att skicka rapporten direkt. Noderna kommer nämligen att köra en webservice som kan komma att anropas många gånger. Ifall ett värde saknas så kan det resultera i tusentals felrapporter. Ifall dessa skickades direkt så skulle det innebära att den som ska kontaktas om att komplettera värdena skulle få tusentals mail.

GladhMedlem sedan maj 20012 812 inlägg
#14

Bara för att webbapplikationen stängs ned så stängs inte siten ned. Så fort någon gör en request så startas ju applikationen.

Efter lite mer läsning så håller jag med, måste ha tänkt på ASP's Application_onStart() som kördes när IIS:en startade. Ivilket fall som helst så kan du göra en riktigt fulling och i Application_onEnd kalla din egen site igen, vilket betyder att din application alltid kommer att vara igång.

- M

134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)