Avatar billede nicocarlos Nybegynder
22. marts 2004 - 18:17 Der er 22 kommentarer og
1 løsning

skal opdatere tabel værdi ved hjælp af shell

Hejsa.
Jeg har aldrig arbejdet i shell før og står og skal til at opdatere en tabel værdi i mySQL hvert 20.ende minut. Jeg har ikke adgang til Root og kan derfra ikke lave et cron job.
Jeg vil gerne opdater tabellen turns i min database.

Jeg giver 200 points til dem der vil hjælpe mig..da jeg virkelig har brug for det :D

håber at nogle vil hjælpe...
Avatar billede dennismp Nybegynder
22. marts 2004 - 19:31 #1
Du behøver ikke at være root for at bruge cron. Cron er langt den mest elegante løsning.
Avatar billede nicocarlos Nybegynder
22. marts 2004 - 19:42 #2
jamen, jeg har ikke mulighed for cron..så jeg bliver nødt til at bruge denne dårligere løsning, desværre :(
Avatar billede dennismp Nybegynder
22. marts 2004 - 20:04 #3
Kan du ikke spørge dit webhotel pænt om det?

Ellers er det vel noget med, at du sætter en anden maskine til at gå ind på en bestemt url hvert. 20'ende minut (via cron) .. Stadig grimt.

Eller gøre det via din hjemmeside, således at du på nogle/alle sider, tjekker om der er gået 20 minutter siden sidste "job" og så bearbejder mysql, før du laver resten af siden. Det vil dog så blive kørt "cirka" hver 20ende minut. Dvs hvis du ikke har nogle besøgende i 2 dage, så får du ikke opdateret noget. Tjekket giver også lidt ekstra (database) arbejde.
Avatar billede nicocarlos Nybegynder
22. marts 2004 - 21:28 #4
ja, det er lidt noget skidt men måske skulle jeg lige prøve at kontakte mit webhotel :/
Avatar billede Slettet bruger
22. marts 2004 - 21:31 #5
Har du mulighed for at køre et job senere med kommandoen at? Så kan du nemlig lave et script, der udfører det nødvendige og afslutter med:

echo ~/bin/scriptnavn | at now + 20 minutes

Du kan teste, om du kan bruge at på følgende måde:

først se om du kan sende mail fra shellen:
echo "hej" | mail -s "test" dinmailadresse

Hvis mailen kommer frem, så skriv følgende kommando:

at now + 5 minutes
echo "hej igen" | mail -s "test af at" dinmailadresse


Bemærk, at du får ikke en prompt på linie 2. Når du har trykket enter efter linie 2 skal du taste Ctrl-D.

Hvis du efter ca. 5 minutter får en mail kan du bruge at.
Avatar billede dennismp Nybegynder
22. marts 2004 - 21:43 #6
Jeg overvejede også at, problemet er bare, hvis den "løkke" bliver brudt (fx. ved reboot), så er skidtet nede indtil nogen finder ud af det. Og så kunne jeg forestille mig, at webhotellet havde en idé med at slå cronjobbet fra - så de er nok ikke vilde med alternativet.

Igen: snak med dem om det.. Nogle af dem er faktisk mennesker :-)
Avatar billede nicocarlos Nybegynder
22. marts 2004 - 21:45 #7
jeg prøver lige at få en snak med dem, men kan først få fat i dem imorgen :D
Avatar billede nicocarlos Nybegynder
22. marts 2004 - 22:26 #8
okay, så har jeg lige fået svar, de understøtter ikke cron job og vil ikke oprette det til mig, så det må lave igennem Shell, som jeg har mulighed for. kan nogen af jer hjælpe med det?
Avatar billede dennismp Nybegynder
22. marts 2004 - 22:31 #9
Hvordan vil du gøre det?

1: med at komnadoen som sandbox foreslår
2: via php-kode på mange/all dine phpsider
3: vha af en anden maskine der via cronjob står og henter en bestemt url hver 20. minut. (den kalder et php-script hver 20 minut).

Vedr idé 3, så kan jeg snildt smide det i min crontab - men så er du afhængig af mig.
Avatar billede nicocarlos Nybegynder
22. marts 2004 - 22:36 #10
hmm, jeg aner jo ikke så meget om nogle af de metoder. Jeg tager bare den du foreslå er bedst :D
Avatar billede Slettet bruger
22. marts 2004 - 22:38 #11
Der er ulemper ved alle tre, så det må være dit valg.

Du kan jo lige afprøve at-kommandoen. Det er ikke sikkert at det virker, og så ved du da om du har 2 eller 3 muligheder.
Avatar billede nicocarlos Nybegynder
22. marts 2004 - 22:43 #12
okay, men jeg tror at jeg får størst problemer med den at funktion da jeg overhovedet ikke ved hvordan shell virker, måske ville det være lettest hvis du smed det ind i din crontab?? Eller hvad ville ulempen være ved det?
Avatar billede dennismp Nybegynder
22. marts 2004 - 22:44 #13
At du bliver afhængig af en person du ikke kender :-)
Avatar billede nicocarlos Nybegynder
22. marts 2004 - 22:47 #14
hehe, ja det kan jeg godt se, hmm men jeg bruger noget der hedder webshell 3, og når sandbox siger at jeg skal sende mig selv en mail derinde fra, bliver jeg helt forvirret, men dennismp kører din crontab 24 timer i døgnet i øjeblikket, fordi det kunne bare være imddlertidigt?
Avatar billede Slettet bruger
22. marts 2004 - 22:48 #15
Og vi kan ikke ret let afveje fordele og ulemper ved de forskellige muligheder, for det kommer an på, hvor vigtigt det er, at det bliver kørt på nøjagtigt hvert 20. minut og hvor meget trafik du har, men her er lidt beskrivelse:

1) at-kommando:

Hvis serveren har været nede, skal den genstartes manuelt. Til gengæld kan den laves ganske præcis med tidspunkter. Men hvis cron ikke er muligt kan du ikke være sikker på, at denne er mulig.

2) integreret i normal php-kode:

Giver lidt større belastning - især hvis du har meget trafik. Kan blive endda ekstremt upræcis, når der ikke er meget trafik.

3) eksternt cron-job, der kalder specifikt php-script:

Giver to servere, der begge skal køre, for at din kode gør som du forventer. Du vil måske være afhængig af en tredjepart. Vil være mere præcis en metode 2 hvis der er få besøg.
Avatar billede dennismp Nybegynder
22. marts 2004 - 22:48 #16
metode-1:
du kalder et script .. det script udfører så nogle kommandoer, venter 20 minutter og starter forfra.

fordel: Du er ikke afhængig af andre.
ulemper: hvis din løkke bliver brudt (f.eks ved reboot, fejl eller lign) så skal du ind manualet og starte den igen.

metode-2:
På alle dine sider inkludere du en "cronjob.php" fil. I denne fil tjekker du om det er 20 minutter siden sidst og udfører det der nu skal udføres.

fordel: du styrer showet. Selv ved reboot vil den virke.
ulemper: overhead. Ingen garanti for at det bliver kørt hver 20. minut. Du er afhængig af een der ser på din side, som så kan starte showet. Du skal have ekstra kode ved hvert hit, der tjekker om du der er gået 20 minutter siden sidst.

method 3:
Få en anden til at kalde dit script hver 20ende minut.

fordel: forholdvis ren. virker ved reboot osv. Ikke ret meget overhead iforhold til 2. Og mere stabil ned 1. Men koden er så ligetil. Du skal bare kode det der skal udføres hvert 20. minut.. Så bliver det kaldt hver 20 minut.
ulemper: afhængig af anden server. Hvis denne går ned, så får du ikke opdateret alligevel. Du har ikke mulighed for at styrer selv hvornår dit script skal kaldes.
Avatar billede nicocarlos Nybegynder
22. marts 2004 - 22:52 #17
tusind tak for de gode forklaringer, jeg vil kontakte mit webhotel imorgen og hører med sikkerhed om den at kommando.
Jeg regner ikke med at siden bliver vildt belastet, men det kan selvfølgelig være.
Jeg tror godt vi kan udelukke metode 2 med det samme.
Så er der at kommandoen og cronjob tilbage.
Jeg tjekker med at kommandoen imorgen og ligger besked med det samme herinde.
:D
Avatar billede Slettet bruger
22. marts 2004 - 22:55 #18
Du behøver såmænd ikke spørge dem. Bare afprøv det. Bortset fra at du skal indtaste din egen emailadresse i stedet for "dinmailadresse" skal du bare skrive af fra mit indlæg.
Avatar billede Slettet bruger
22. marts 2004 - 22:57 #19
Grunden til at den skal sende en mail er, at du skal jo kunne se et resultat, hvis det virker. Da den bliver kørt i baggrunden vil du ikke kunne se det, hvis den forsøger at udskrive normalt.
Avatar billede nicocarlos Nybegynder
23. marts 2004 - 08:29 #20
ja, men problemet var at jeg ikke lige kunne se hvorhenne i shellen jeg skulle skrive den kommando.. :/
Avatar billede Slettet bruger
23. marts 2004 - 20:43 #21
Er din shell ikke bare en kommandoprompt? Så er der vel ikke så mange forskellige steder at skrive. (Det burde være ligegyldigt hvilken mappe du står i.)
Avatar billede nicocarlos Nybegynder
23. marts 2004 - 23:01 #22
undskyld jeg ikke har skrevet før, men min skole ville ikke lade mig skrive svar her, meget mystisk. Men jeg har ikke adgang til shell, selvom jeg kan gå ind i noget som hedder webshell. - så jeg bliver nødt til at have dennismp til at køre en imiddler tidig cron job :/
Avatar billede dennismp Nybegynder
12. april 2004 - 23:54 #23
Smid en mail til mig på dennis@moellegaard.dk - med det link der skal kaldes og hvor tit det skal kaldes.
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