Avatar billede jimmydk Nybegynder
13. maj 2010 - 10:50 Der er 11 kommentarer og
2 løsninger

Automatisk hent en ekstern fil en gang om dagen.

Jeg har en hjemmeside kørende hvor jeg skal hente en ekstern xml fil en gang om dagen for at gemme den lokalt.

Hvordan koder jeg det så hjemmesiden henter den fil f.eks. klokken 10 hver dag.?

Det med at hente filen har jeg kodet, det er en tricker som jeg skal bruge så det sker.

Så et link til et tut eller selve koden, vil være værdsat.
Avatar billede keysersoze Guru
13. maj 2010 - 10:57 #1
Du kan på en hjemmeside ikke trigge at noget skal ske på et bestemt tidspunkt - der er du nødt til at en besøgende skal trigge en handling, fx den første efter kl 10.

Alternativt skal du have adgang til en form for cronjob/scheduled task - en del webhoteller tillader, hvis du har din egen maskine kan du sætte et job op og ellers må du ud og kigge på tredjeparts-løsninger (fx cronjob.de).
Avatar billede jimmydk Nybegynder
13. maj 2010 - 11:25 #2
Der hvor jeg har det til at ligge nu, tillader de ikke nogen form for cronjob/scheduled task.

Så det er nok den anden løsning jeg skal ud i.
Er det noget du et link til.?
Avatar billede keysersoze Guru
13. maj 2010 - 11:39 #3
"den anden løsning"?

som nævnt er cronjob.de en tredjeparts-løsning du kan benytte dig af - der findes også andre lignende services, men ikke nogle jeg kan huske navnene på.
Avatar billede Syska Mester
13. maj 2010 - 14:32 #4
Globals.asax burde man i princippet kunne lave en shedule ...

Når app starter op ... tilføj en ting til Cache og lad den expire på et bestemt tidpunkt, og giv den en callback function. Så har du schedule i asp.net :-)

Jeg har aldrig selv brugt det, men det burde virke.

mvh
Avatar billede bvli Praktikant
13. maj 2010 - 15:10 #5
Helt enig med buzzzz.

Håndter application_start og sæt en timer op (brug f.eks. System.Threading.Timer) til at Tick'e f.eks. til midnat. og i din callback laver du det du nu skal.
Avatar billede jimmydk Nybegynder
13. maj 2010 - 20:07 #6
Fik løst problemet midlertidigt, med at få en med en plesk server til at køre det som fast job hver dag.

Det giver mig lidt tid til at rode med det andet.

Smider i et svar på kan i dele.
Avatar billede Syska Mester
13. maj 2010 - 22:48 #7
svar
Avatar billede keysersoze Guru
13. maj 2010 - 23:24 #8
svar :)

Det skal dog nævnes, at jeg kender til global.asax-løsningen men personligt synes jeg ikke om at være afhængig af global.asax og slet ikke threading på web (i hvert fald til denne type jobs= og derfor blev den ikke nævnt når nu der er gode løsninger som fx cronjob.de.
Avatar billede Syska Mester
14. maj 2010 - 14:44 #9
Være afhænging af Global.asax ... hvad skulle problemet i det være?

Min løsning går også udenom Timer ... og bruger et simpelt Cache object og dens mulighed for at lave et callback når den udløber.

mvh
Avatar billede bvli Praktikant
14. maj 2010 - 15:51 #10
Arj altså.. Være afhængig af Global.asax? Hvad i alverden skulle problemet være i det? Undgå tråde? Hvorfor? Specielt en timer, som udløber på et angivet tidspunkt bliver gemt så langt væk af operativsystemet, at det overhead er mere eller mindre ingenting.

I øvrigt ville jeg bryde mig om, at ting min applikation er afhængig af, også ligger i applikationen. Det letter i høj grad også installationen.

Men nok om det - trådstarter fik vist svar på sit spørgsmål :)
Avatar billede arne_v Ekspert
15. maj 2010 - 03:36 #11
Generelt er det fy fy at starte tråde uden om containerens tråde i apps kørende i container.

Endvidere skal man overveje hvad der sker hvis server eller app genstartes.

Et eller andet som er beregnet til at lave noget på bestemte tidspunkter og som defor komme korrekt på benene igen efter en genstart er en noget mere robust løsning.
Avatar billede Syska Mester
19. maj 2010 - 22:31 #12
Jeg holder på min Cache item med callback ...

Den overholder også Arne_vs krav :-)

mvh
Avatar billede arne_v Ekspert
19. maj 2010 - 22:44 #13
Hvad med app genstart ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester