Avatar billede thewizard Nybegynder
24. december 2007 - 08:30 Der er 19 kommentarer og
1 løsning

Automatisk databaselagring

Hej champs of evil programming!

Jeg vil gerne have at brugerne på min side, har mulighed for at lave tidsbaseret lagring i min mySQL-database. Dvs. en bruger logger ind, og siger: Nyheden (dataene) skal lægges i databasen kl 8:05 d. 26-11-07.

Jeg har læst lidt at der skal en SQL agent til? Belær mig vismænd! :)

Jeg tror desværre ikke at one.com leverer webhotels med SQL agent, hvilket sætter mig i et dilemma. Løsninger, scripts, og vise ord belønnes med 200 point (da det nu er juledag, og der sikkert at langt mellem svarerne, så gør dette forhåbentligt det mere attraktivt).
Avatar billede nielle Nybegynder
24. december 2007 - 08:42 #1
Hvad med at blot lægge data i databasen med det samme? Udvid så nyheds-tabellen med en ekstra kolonne som indeholder hvornår nyheden skal være synlig fra. (kan eventuelt udvides med endnu et felt som angiver hvornår den skal være synlig til)
Avatar billede thewizard Nybegynder
24. december 2007 - 08:44 #2
Hehe ja, ved godt det er et mystisk spørgsmål.

Men der SKAL desværre være delay på. Og skal være muligt at se en nedtælling til hvornår det lægges i databasen :). Kan det gøres?
Avatar billede thewizard Nybegynder
24. december 2007 - 08:46 #3
Se det sådan her. Det skal virke lige som en bank. Hvor renten er konstant (og ikke en gang og måneden) dvs. brugeren kan se renterne af sin løn konstant tælle ind... en øre, 2 øre, 3 øre, 4 øre.. osv.

Giver det mening? :).
Avatar billede thewizard Nybegynder
24. december 2007 - 08:47 #4
Hmmm glem den sidste kommentar :).
Avatar billede thewizard Nybegynder
24. december 2007 - 08:49 #5
Nej nej den er god nok ... så skal Agenten (jeg ved ikk om det virker sådan, men lad os kalde den "agenten") holde øje med om personen sætter flere penge ind, for at få en større rente. Dvs. i stedet for at den opdaterer databasen hvert minut med +1 øre.. så sætter den måske +2 øre ind på kontoen! :o.
Avatar billede nielle Nybegynder
24. december 2007 - 08:59 #6
Desværre så ved jeg ikke lige hvordan du ville gøre den slags i MySQL. Det kræver i hvert fald at du har mere end almindelig adgang til serveren med MySQL basen. Mere end hvad man normalt har på et webhotel...

Et problem i sammenhængen er at få noget kørt på et bestemt tidspunkt - uden at der er en bruger, som skal køre et script. Jeg ved ikke om MySQL har et sådant indbygget system (de nævnte SQL agenter), men en anden måde er at udføre den slags job som cronjobs. Hvis man ikke lige har adgang til at køtre cronjobs på serveren, kan man eventuelt benytte sig af eksterne tjenester som det cronjob.de levere.

Endnu et problem er at data under alle omstændigheder skal gemmes et eller andet sted indtil at de er parat til at blive lagt i databasen. En mulighed her kunne være at gemme dem som filer på disken, en anden kunne være at gemme dem i en temporær tabel (i databasen).

PS: Hvad er det lige ved nyheder der gør at det er så vigtigt at skelne skarbt med hvornår de er i databasen og hvornår at de er synlige?
Avatar billede thewizard Nybegynder
24. december 2007 - 09:05 #7
Prøv at læse det overstående :) Det med banken. Det giver udfordring..

Fordi der kan være 1000 kunder i banken. Alle har hver x antal kr. på bankbogen, og alle skal ha' indbetalt +y i rente hvert minut. Den automatisk indsættelse skal gøres på en nem måde :/.
Avatar billede thewizard Nybegynder
24. december 2007 - 09:06 #8
Men ja, tror jeg desværre må opstille min egen mySQL-server - for at få fuld adgang, og ikke one.com's begrænset adgang.
Avatar billede nielle Nybegynder
24. december 2007 - 09:10 #9
Et cronjob er simpelt, og det ville kunne sættes til at køre automatisk en gang i minuttet.
Avatar billede thewizard Nybegynder
24. december 2007 - 09:12 #10
Kan du forklare hvordan et cronjob virker? :)

Husk at det også skal være muligt at lægge data i databasen, ved brugernes "request". :). De skal sige, kl 8.03, osv.. :) Håber man også kan det med et "cronjob".
Avatar billede thewizard Nybegynder
24. december 2007 - 09:24 #11
Må næsten være en nem løsning på det her problem :).
Avatar billede nielle Nybegynder
24. december 2007 - 09:27 #12
Et cronjob er en facilitet som er indbygget i Linux (og Unix). I et Windowssystem ville det svare til en Windows-service. Det er et lille program som kan sættes til at køre på faste tidspunkter - f.eks. een gang i minuttet.

Du definere et cronjob og sætter det til at køre et bestemt PHP script som du har skrevet til formålet: Dette script opdaterer så renterne i banken. I stedet for at det er en bruger som aktivere PHP scriptet er det altså cronjobbet som gør det.

Det var den med renterne...

Så er der indsætningerne (og udtræk?). Dem ville jeg selv vælge at håndtere ved at lave en ekstra tabel med "indsætnings jobs" - hvor meget der skal indsættes, til hvilken konto og hvornår. Så ville jeg have endnu et cronjob (kunne dog være det samme som det forrige) som med jævne mellemrum kigger i job-tabellen og ser om der er et job som skal udføres (om tiden er kommet). Hvis der er det, så indsætter den pengene i banken og sletter jobbet fra jobtabellen.
Avatar billede thewizard Nybegynder
24. december 2007 - 09:31 #13
:) nu kører jeg windows, desværre. Hehe. Et "opdaterings" program som du nævner, lægger vel ikke i xp/vista som standard?
Avatar billede thewizard Nybegynder
24. december 2007 - 09:31 #14
Kan 100% følge dig i det du siger.
Avatar billede nielle Nybegynder
24. december 2007 - 09:36 #15
Så kan du enten programmere det som en Windows service (at foretrække), eller du kan sætte det op med Window's Scheduler.

Det er muligt at der findes noget indbygget i MySQL, men så vil det sandsynligvis være i form af en service. Jeg kender ikke lige noget til den del og der vil du nok have en bedre chance ved at stille spørgsmålet i MySQL kategorien under databaser.
Avatar billede thewizard Nybegynder
24. december 2007 - 09:39 #16
Jah, vil prøve at smide spørgsmålet derover. Du gjorde dit bedste, nielle :) bare læg svar. Takker for hjælpen.
Avatar billede nielle Nybegynder
24. december 2007 - 09:41 #17
For sjov skyld kan du jo lige tjekke efter om du kan køre PHP scripts vha. Windows scheduler. Jeg gætter på at det faktisk mville være langt det simpleste.

... og svar :^)

God jul!
Avatar billede thewizard Nybegynder
24. december 2007 - 09:47 #18
Tvivler jeg man kan :) Men skal afprøves.
Avatar billede znopie Nybegynder
24. december 2007 - 10:08 #19
Kan du ikke bare noter i din database hvornår 'brugeren' sidst var på, og når han kommer på begynder dit script at tælle hvornår han sidste var på, til han blev set igen. Så kan du jo sætte en værdi den skal have for hvert sek., min. eller time.

Så slipper du for at bruge alle mulige 'agenter' osv.


(Kun en idé)
Avatar billede thewizard Nybegynder
25. december 2007 - 01:38 #20
Brugeren skal desværre kunne se sin konto - og se at pengene tæller ind :/. Jeg regner med at lave en 5 minutters opdatering, igennem en ekstern applikation, lavet i VB sikkert :).
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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