Avatar billede fusion-it Nybegynder
08. maj 2009 - 08:30 Der er 20 kommentarer og
2 løsninger

Udøfr handling automatisk på dato ?

Hej alle

Jeg sidder og roder med at få lavet et script som kan udføre nogle ting i db og sende en mail til brugeren. Dette skal bruges i forbindelse når man opretter brugere til systemet bliver der tastet en dato som udløbs dato for denne bruger.

Eks.

Navn:        John doe
Bruger navn : Joe
Password:    *******
Udløb:        19-06-2009 12.00

På dato for udløb vil jeg have gerne have den køre et bestemt script og går i DB laver ændringer for denne bruger.

Spørgsmålet er så hvordan får jeg den til at "auto submite" den pågælende dag.

Jeg tænker om ikke det er muligt at bruge:

<body  onLoad="window.setTimeout('document.webform.submit()',0*1000)">

Jeg ved bare ikke hvordan jeg får IF sætningen i der ?
Avatar billede magic-mouse Novice
08. maj 2009 - 08:43 #1
Dit forslag kræver at der er nogen der ser på siden. Hvis det er det der er sagen så er det fint at lave noget der kører den dag.

MEN - ud fra dit eksempel kan jeg se at det er en udløbs dato, du kan eks. lave et script der tester [Hvis dagsdato > udløbsdato] men lad os nu lege at vi har 2000 personer i databasen og du kører det script i body onload så bruger du ca 0.5-1 sek hvergang (og det anbefales at normal tid til at loade en website er ca 1 sek så dvs. du ikke har noget load tid tilbage til grafik osv. + det er lidt overdrevet belastning af databasen (Især hvis du har 2000 brugere til systemet)

Alternativ- http://www.aota.net/Script_Installation_Tips/cronhelp.php3

Programmer som cronjob udfører noget X gange om dagen. dvs. istedet for at belaste databasen hvergang nogen logger ind for at checke om der er noet der er udløbet så belaster du den eks 3 gange om dagen.

Andet så spørg bare.
Avatar billede keysersoze Guru
08. maj 2009 - 08:42 #2
Som jeg gætter det ud fra din kode har du sikkert allerede opdaget at du i ASP ikke automatisk kan udføre handlinger - der skal være noget til at trigge handlingen.

En mulighed som du er inde på med din kode så vil det være en bruger/besøgende der udfører handlingen (bevidst eller ubevidst) men det vil være uhensigtsmæssigt uanset hvordan man end vender og drejer det - enten er der så få besøgende at man ikke kan være sikker på at koden trigges når den skal eller også er der nok besøgende men til gengæld belaster man alle med dette usynlige kald.

Den bedste mulighed er at have et job kørende - enten via en computers scheduled task, nogle webhoteller understøtter faktisk dette, eller ved at benytte en 3. part fx cronjob.de. Gør man dette er det bare at have én asp-side, der tjekker databasen og udsender eventuelle mails.
Avatar billede fusion-it Nybegynder
08. maj 2009 - 09:04 #3
Jeg vil da lige starte med at sige dette her skal bruges til mit CMS system hvor man som adminstrator opretter bruger til den. Så der vil ikke blive tale om 2000 brugere da dette er backend.;)

#Som jeg gætter det ud fra din kode har du sikkert allerede opdaget at du i ASP ikke automatisk
Man kan udføre funktioner udfra dato f.eks

If Month(Date) = 3 Then
  Response.Write "<p>Nu er det forår!</p>"
Else
  Response.Write "<p>Jeg ved ikke hvilken årstid det er!</p>"   
End If

Jeg kunne klart lave det sådan det blev tjekket når brugeren logger på,jeg vil hellere have det så brugerens password bliver ændre per auto ud fra den givende dato i db.

Jeg vil kikke på cron job men vil dog vente og se om der skulle komme andre forslag til dette her :)
Avatar billede magic-mouse Novice
08. maj 2009 - 09:08 #4
Alternativt kan du jo lave [Hvis dagsdato >= udløbsdato] på den enkelte bruger men ud far din beskrivelse så virkede det som om du ville teste på en masse posts.
Avatar billede fusion-it Nybegynder
08. maj 2009 - 09:16 #5
Prøver lige igen, jeg har et cms system hvor jeg kan oprette en bruger, jeg giver så denne bruger en udløbs dato som bliver gemt i DB sammen med password og info.

Jeg vil så at når datoen rammer og jeg sidder i Frankrig og hygger skal systemet udføre den handling automatisk ud fra udløbsdato.

#magic-mouse
Jeg er klar over funktionen [Hvis dagsdato >= udløbsdato] problemet er at få den til at udføre det automatisk?

Som sagt kunne jeg lave tjek når bruger logger på men ville da lige høre om ikke det var muligt at lave, det burde det være hehe.

Håber i forstår :)
Avatar billede keysersoze Guru
08. maj 2009 - 09:24 #6
korrekt - du kan udføre ting ud fra bestemte datoer, variabler eller andet men det sker jo bare uden videre, der skal være "noget" til at trigge at koden køres, fx besøg fra en bruger. Det er det jeg mener med at det ikke sker automatisk. Når brugerne så ligger i databasen er du nødt til at forespørge i databasen før du ved om dit ASP skal eksekvere noget og det er hele denne operation der ville gøre det unødigt uhensigtsmæssigt.

Hvis vi ser bort fra det uhensigtsmæssige og vi forestiller os at du sidder i Frankring er du med dit forslag tvunget til at andre besøger siden med trigger-koden på - da du ikke kan være sikker på at det sker er du ude i at det er en opgave for en planlagt opgave på en "server".
Avatar billede fusion-it Nybegynder
08. maj 2009 - 09:34 #7
Nu kommer jeg jo ikke med nogen foreslag men kun ideer til hvordan man kunne gøre, en tinf er "fantasi" en anden virklighed :)

Du må have mig undskyldt jeg ser ikke det uhensigtsmæssige at jeg f.eks opretter dig som bruger fordi du arbejder for mig, dit login udløber så imorgen jeg tager til Frankrig i aften, der sker så noget så du ikke logger på i morgen men i stedet om en uge.

Hvad er det uhensigtsmæssige i at der tjekkes i DB når bruger logger på?

Jeg er skam klar over der ikke er noget som sker automatisk, men det laver jo ikke om på der findes så mange forskellige måde at gøre ting på derfor forspørger jeg her :)
Avatar billede fusion-it Nybegynder
08. maj 2009 - 09:38 #8
Iøvrigt ville brugeren ikke skulle bruge en trigger kode, jeg kunne jo bare lave så nå hvilken som helst logger på tjekkes serom datoen overholdes ;)

På den måde kan jeg "udelukke" tidligere bruger automatisk, jeg ville bare gerne sende info til dem automatisk via et script på den givende dato.
Avatar billede keysersoze Guru
08. maj 2009 - 10:33 #9
alt unødvendig eksekvering af kode er uhensigtsmæssigt - i dit tilfælde ligger det dog på et relativt lille niveau da det ikke drejer sig om et særlig stort antal brugere og, vigtigst af alt, så er det indforståede og ikke tilfældige brugere og det sker i backend.

Forestil dig et system med et meget stort antal brugere og stor aktivitet og systemet automatisk skulle sende disse mails - pga antallet af brugere ville der skulle sendes mails ud så godt som hver dag og med den store aktivitet så er det jo fint ikke at være afhængig af fx en 3. part til eksekvering. Til gengæld ville hver eneste bruger skulle generes med tjekket også selvom der allerede var afsendt mails for i dag, systemet, specielt databasen, ville belastes ved unødigt mange kald og vedkommende der rammer det uheldige tidspunkt ville foruden selve kaldet skulle vente på at et måske stort antal mails skulle afsendes inden login.

Som sagt - i dit nuværende setup vil dette ikke være et issue og du kan derfor fint lægge tjekket og opdateringen sammen med fx login-proceduren (i hvert fald så længe du kan leve med at mailen ikke nødvendigvis sendes præcis samme dag men bare ved næst forekommende login). Det jeg dog ikke helt forstår er hvorfor du vil blande javascript ind i det - hvorfor ikke bare dit database-opslag, en if-sætning og hvis den er opfyldt så sendes mail?
Avatar billede keysersoze Guru
08. maj 2009 - 10:38 #10
"Iøvrigt ville brugeren ikke skulle bruge en trigger kode, jeg kunne jo bare lave så nå hvilken som helst logger på tjekkes serom datoen overholdes"

Klart, vi har ikke noget ønske om at brugeren skal klikke på fx trigger.asp, det skal ske usynligt - men dette er jo også netop en trigger.

Men som skrevet - har du ikke logins hver dag vil du uden en scheduled task ikke kunne sende mails hver dag. Kan du leve med at der kun udsendes mails triggered af et login/besøg så er din tilgang fin.
Avatar billede fusion-it Nybegynder
08. maj 2009 - 11:13 #11
Tak for svarene, jeg forstår godt hvad du mener keyser:)

Jeg laver det så der tjekkes på et licens nr ved login ;)



Læg et svar så deler vi point:)


LUKKER
Avatar billede magic-mouse Novice
08. maj 2009 - 11:15 #12
To sum up muligheder:

1): Srcipt som kører automatisk Cronjob/hjemme programmeret på egen server.

Pro's: Kører altid Uanset workload og den virker som den skal med minimal server belastning.
Cons: Koster penge /kræver en stabil hjemme server og skal sættes op.

2): Check når brugeren logger ind.

Pro's: Meget lav server belastning. Sikker på at brugeren er aktiv/inaktiv når det er.
Con's: Sender ikke e-mails ud når den udløber, man ved først kontoen er lukket når den er lukket.

3): Global check ved indlog.

Pro's: Billig simpel løsning.
Con's: Meget højt server load. Kræver at der er min ét indlog hver dag. Bruger resourcer forkert sted ved indlog.

De er også sat op efter hvad der er bedst.

ps. ikke for at være idiot, men cms system er dobbelt konstatering da s'et i cms står for system (content management system system) ...
Avatar billede fusion-it Nybegynder
08. maj 2009 - 11:31 #13
#ps. ikke for at være idiot, men cms system er dobbelt konstatering da s'et i cms står for system (content management system system) ...

Sweet :)

Jeg tror jeg holder mig til bare at tjekke :)

Men hvis i begge lægger svar deler jeg gerne point ud :)
Avatar billede magic-mouse Novice
08. maj 2009 - 11:32 #14
oki svar her
Avatar billede fusion-it Nybegynder
08. maj 2009 - 11:55 #15
Venter så på Keyser :))
Avatar billede do-it Nybegynder
08. maj 2009 - 12:33 #16
keyser soze - kom nu med en svar..;-)
Avatar billede keysersoze Guru
08. maj 2009 - 12:34 #17
ang mulighed 1 som MM lister op så mener jeg bestemt at cronjob.de er gratis og jeg stødte engang også på en lignende engelsk udbyder med samme pris. Flere webhoteller kører som sagt også med muligheden for at oprette jobs gennem et kontrolpanel.
Avatar billede do-it Nybegynder
08. maj 2009 - 12:41 #18
jeg har faktisk købt JoomlaCMS i tilknytning til mit webhotel, det et ved at skulle flyttes derfor ikke gider en mailadresse - men lige en tilbagemelding på joomla?
Avatar billede do-it Nybegynder
08. maj 2009 - 12:43 #19
Nu kan jeg ikke komme, til at acceptere svarene?
Avatar billede keysersoze Guru
08. maj 2009 - 13:22 #20
du er i et forkert spørgsmål :)
Avatar billede do-it Nybegynder
08. maj 2009 - 13:27 #21
hmm, ved ikke hvad der er sket - melder mig sgu ud af det her...;-)
Avatar billede fusion-it Nybegynder
08. maj 2009 - 20:00 #22
LOL do-it

God ryger :)
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
Kategori
Kurser inden for grundlæggende programmering

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