03. december 2003 - 01:06Der er
9 kommentarer og 1 løsning
Er dato i db og dags dato større end 6 mdr skal der sendes mail
Er der nogen, der kan komme med et godt bud på denne her?
Jeg har en dato gemt i min db under rsUsers("sidste_log") - altså hvornår brugeren sidst loggede ind. Denne bruger skal tilsendes en mail (som hentes i rsUsers("mail")), hvis brugeren ikke har været logget ind i et halvt år.
Hvilke metoder findes der for at afvikle dette?
Findes der en funktion, der kan sætte et run igang i databasen hver 24. time, der tjekker om rsUsers("sidste_log") er mere end 6 måneder ældre end dags dato - eks. via Now() ??
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
PS: Enten skal ("sidste_log") være præcis 6mdr gammel i forhold til Now(), så ikke samme bruger modtager én mail pr døgn - og selvfølgelig forudsat at det run der tjekker db'en, afvikles med sikkerhed hver 24. time. ...eller...
Jeg måske skal lave en tjekbox i db'en, hvor der tjekkes af, hvis der ER afsendt mail til brugeren???
Ja ... jeg ved ikke helt hvordan jeg skal tænke den ud...
Sæt en dato i din database, der siger, hvornår du har sendt afmeldelsesmailen. Så kan du køre et script, når du vil, der afsender mails og opdaterer datoen. Dermed bestemmer DU hvornår der skal laves udløbscheck. Hvis en eller anden så siger, de ikke vil afmeldes, retter du blot datoen. Så kan du også selv bestemme, hvornår du vil slette de forskellige poster, f.eks. efter 3 måneder som inaktiv. I den mellemliggende tid kan andre blive gjort inaktiv, UDEN at de bliver fysisk slettet ved den store rengøring.
hov - så har jeg ikke helt været tydelig nok. Brugeren skal kun modtage én mail. Sådan her er det:
1) Hver gang brugeren logger ind sættes dato'en i db'en under rsUsers("sidste_log")
2) Hvis denne dato bliver ældre end 6 mdr, skal brugeren modtage en mail, der påminder om at han/hun ikke har været logget ind i 6 mdr og at konto'en lukkes hvis ikke der logges ind indenfor 14 dage.
3) Logges der ikke ind indenfor 14 dage, resettes ("sidste_log") derfor heller ikke og der afvikles så en lign. funktion (bare med en tidsfrist på 6 mdr + 14 dage) hvor kontoen lukkes.
PS: Siden skal - i så vidt muligt omfang - være selv-opdaterende. Dvs. uden jeg skal tjekke alle dato'er i db'en hver dag... Kan det ikke afvikles automatisk??
Du kan normalt ikke få scriptet til automatisk at køre sig selv.
Nogle webhoteller tilbyder en service der hedder "CronJob". En slags "Planlægningsagent" (eller hvad den nu hedder). Den kører på et forudbestemt tidspunkt, og udfører en eller anden handling.. i dit tilfælde, et dato check. Denne service plejer gerne at koste et lille beløb per afvikling/kørsel af CronJob. F.eks. 25 øre per afvikling, muligvis også et gebyr for at have servicen tilrådighed. Læs om CronJob er muligt (og pris) på dit webhotels hjemmeside, eller kontakt dem.
En anden løsning er, selv at have en computer med "Planlægningsagenten" kørende, som så går ind på en side på nettet, som så udfører dit dato check.
En dålig løsning er, at scriptet kører når en eller anden bruger logger ind. Hvis ingen logger sig ind, bliver "dato check"-scriptet aldrig afviklet, hvilket betyder at ingen mail sendes og at ingen konti lukkes ned.
1) lav et felt i din tabel, der eks. hedder reminder. set den pr. default til 0.
2) lav et script, der selecter alle brugere hvor login < now() - 6 months & reminder = 0.
3) send mail til disse.
4) update alle disse brugere til reminder = 1
5) lav et tilsvarende script, der checker for 6mdr+14dage, men som sletter dem.
6) sæt dine scripts til at afvikle eks. een gang i døgnet (sen nat/tidlig morgen). det gør du med en scheduler. det kommer lidt an på hvordan din server er sat op - spørg din sysadmin.
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.