webForumDet fria alternativet

Läsa in en fil en gång i halvtimmen?

.NET

14 svar · 972 visningar · startad av inspiro

Medlem sedan sep. 2005673 inlägg
Frågan#1

Vilken teknik ska man använda för att läsa in en xml-fil säg en gång i halvtimmen? Web services? Jag har min webb på ett webbhotell, alltså ingen egen server om det gör någon skillnad...

Medlem sedan feb. 2005280 inlägg
#2

Antingen med Filåtkomst om den ligger lokalt, annars skulle jag göre en WebClient och surfa hem den om det går, till sist använda Web services om den inte går att komma åt direkt.
Frågan är väl snarare hur du tänker trigga körningen? jag har själv inget bra svar på det men det vore kul med lite tips ;) Jag har hittills låtit folk som surfar på sajten trigga jobbet, men det blir lite inexakt (nattetid kanske ingen är inne på nåra timmar osv)

Medlem sedan sep. 2005673 inlägg
#3

Nej, filen ligger inte lokalt utan på en annan server. Det är just det där med hur man triggar igång körningen automatiskt som jag gärna skulle vilja ha svar på... :) Det är viktigt att den körs en gång i halvtimmen så jag vill helst inte lösa det genom att låta surfande användare trigga koden.

Medlem sedan maj 20012 812 inlägg
#4

inspiro skrev:

Nej, filen ligger inte lokalt utan på en annan server. Det är just det där med hur man triggar igång körningen automatiskt som jag gärna skulle vilja ha svar på... Det är viktigt att den körs en gång i halvtimmen så jag vill helst inte lösa det genom att låta surande användare trigga koden.

Du har bara 1 alternativ och det är att någon anropar din sida en gång i halvtimmen. Om du lyckas övertala webbhotellet att lägga upp en schemalagd händelse så är det det absolutbästa, om du inte kan göra det, så måste någon annan dator anropa din webbsida en gång i halvtimme, du kan alltså själv sätta upp en dator som anropar din sida 1 gång i halvtimmen, men det krävs så fall att datorn alltid är online...

Det finns försök med att man låter trådar ligga kvar i bakgrunden och köra och osv osv, men inget av det är speciellt säkert, så du måste helt enkelt lösa det så att din sida anropas 1 gång i halvtimmen någonstans ifrån...

- M

Medlem sedan juli 200799 inlägg
#5

Det finns en klass i javalibbet som heter Timer.java
java.util.Timer;
java.util.TimerTask;

du skulle kunna skriva en svinliten javaapplikation som du kör i tomcat på webhotellet, och som triggar filinläsningen?

läs in dig på hur man använder klassen, har för mig att det inte är så jättesvårt.

lycka till, hoppas du får till det.

Medlem sedan sep. 2005673 inlägg
#6

Men kan man köra det på en iis-server?

Om man skulle ha en egen server, hur skulle man lösa det då? Skriva ett program som man kör med den vanliga schema-läggaren?

Medlem sedan feb. 2005280 inlägg
#7

Jag skulle kollat IIS loggen o se hur mycket träffar det är hela dygnet, det lär ju vara en hel del om url finns reggad hos sökmotorer osv. Sätta upp en trigger och logga alla jobbkörningar enligt 30 minutersprincipen, o se hur de sprids ut över tiden.
Hur petnoga är det med exakt 30 minuter?

Ja ett litet windowsprogram som schemaläggs i vanliga managern. Kommer du åt servern är ju detta det bästa förstås.

Medlem sedan sep. 2005673 inlägg
#8

Näe, så petnoga är det inte men jag har inte så många besökare så risken finns att det skulle gå flera timmar mellan gångerna.

Hur har du löst det för att låta besökarna trigga igång kod? Ska man ha någon slags global variabel som innehåller en tid och så kolla mot den varje gång en sida laddas om (jag har en master-page, skulle kanske kunna ha den där?) eller finns det något bättre sätt?

Medlem sedan feb. 2005280 inlägg
#9

Jag har ett forum som jag byggt åt vår lilla community, som är ett frameset, en liten footer-frame ligger och rullar (refreshar varje 60 sekund, men har en output cache så den inte drar ner prestanda så mycket), och den kollar mot ett datetime-värde jag har i en databastabell bara, simpelt men funkar bra för mina behov.

Egentligen, när man kör med outputcache påslaget, så behöver man ju inte ens ett värde i db, det räcker med att Duration har den tid man vill ha som intervall...

Men, oftast ratar man ju framesets nuförtiden och jag antar att master page är ett bra ställe att lägga det på, då körs det vid alla requests, eller i Global asax.cs i protected void Application_BeginRequest(object sender, EventArgs e) för den delen.

Medlem sedan okt. 20041 556 inlägg
#10

Hajjar du lite tyska så kan du anlita en sådan här tjänst.
Denna verkar ha en gratisvariant.
http://cronjob.de/preise.php

Medlem sedan juli 200799 inlägg
#11

alternativt kan du ju göra en timer i global.asax

http://www.idt.mdh.se/utbildning/exjobb/files/TR0517Bilaga_Kod.pdf

Medlem sedan aug. 20003 575 inlägg
#12

Nu är jag inte alls säker på detta, men eftersom den körs som en application, kan man inte starta en tråd när applikationen startar och sedan låta den sköta jobbet lite då och då?

Medlem sedan juni 200511 inlägg
#13

http://www.codeproject.com/KB/aspnet/ASPNETService.aspx

Jag har bara testat detta en gång lite snabbt och det verkade fungera bra, men jag har inte haft någon använding för det i de projekt jag har jobbat med. Jag har ingen aning om hur det fungerar med tung trafik och mycket trådar, men det är nog värt att testa.

Medlem sedan feb. 2005280 inlägg
#14

sorting skrev:

http://www.codeproject.com/KB/aspnet/ASPNETService.aspx

Jag har bara testat detta en gång lite snabbt och det verkade fungera bra, men jag har inte haft någon använding för det i de projekt jag har jobbat med. Jag har ingen aning om hur det fungerar med tung trafik och mycket trådar, men det är nog värt att testa.

Jag tycker det verkar extremt fiffigt och bra, tack för tipset :bire

Medlem sedan sep. 2005673 inlägg
#15

Japp, det där ser ju riktigt intressant ut! Har inte hunnit testa själv än men jag markerar tråden som löst tills motsatsen är bevisad. ;) Tackar!

285 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
139 ms — deklarationer (db)
0 ms — hämta statistik (cache)
144 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)