Avatar billede nemlig Professor
11. juli 2008 - 09:08 Der er 11 kommentarer og
1 løsning

Problemer med cronjob

Hej.
Jeg har et kalendersystem installeret på en række webhoteller. I systemet findes nogle scripts, som helst skal afvikles 1 gang dagligt.
Derfor har jeg lavet en enkelt html-fil, hvor jeg ved hjælp af <iframe> aktiverer de forskellige scripts. Html-filen ligger på min egen hjemmeside (one.com).
Det virker fint, når jeg i en browser aktiverer denne html-fil, men jeg vil gerne, at det kører automatisk.
Derfor anvender jeg onlinecronjob.com.
Umiddelbart ser det ud til, at html-filen afvikles korrekt (jeg får en kvittering pr. email), men underliggende kald via <iframe> er altså ikke sket.
Er det fordi der sker en slags "timeout".
Nogen forslag til, hvordan jeg alternativt kan afvikle disse script automatisk??
Jeg er med på løsningen, hvor jeg laver <iframe> på den enkelte hjemmmesides index.html eller hvad index-filen nu hedder. Men jeg ville gerne via et cronjob.
Avatar billede pidgeot Nybegynder
11. juli 2008 - 09:51 #1
Det er fordi de steder bare henter den fil du peger på - de kigger ikke videre på indholdet.

Peg den i stedet hen mod et PHP-script el. lign der kører de andre scripts.
Avatar billede nemlig Professor
11. juli 2008 - 11:41 #2
øh - det er jeg ikke helt med på.
Hvordan skal jeg pege på et script, som ligger på et andet webhotel. I dag gør jeg det med iframe - er der en anden løsning.
Avatar billede pidgeot Nybegynder
11. juli 2008 - 11:54 #3
Lige nu har du en HTML-fil liggende hos One, og dit cronjob er sat op til at hente den fil. Den fil bliver dog ikke behandlet på nogen måde, så det fungerer ikke som du havde regnet med.

Det du i stedet skal gøre er at sætte dit cronjob op til at hente et PHP-script (eller ASP), fordi det lader dig køre noget kode på serveren - det sker nemlig når nogen forsøger at hente siden, uanset hvad de forsøger at gøre med det. Den kode skal så gøre det du nu har brug for at gøre med de sider du har lagt ind i den iframe - sandsynligvis er det blot at hente dem, hvilket du eks. kan gøre med PHP-funktionen file_get_contents().

Hvis det er noget andet du er ude efter, så må du jo forklare hvad det er der egentlig skal ske.
Avatar billede nemlig Professor
11. juli 2008 - 12:11 #4
Vi er op rette spor - jeg skal bare lige forstå det.
Altså et php-script på min side hos one.com, som kalder de php-scripts, som ligger de eksterne steder.
Og så i stedet for <iframe>, skal jeg gøre brug af funktionen file_get_contents().
Kan du give et eksempel på brugen af denne funktion. Jeg har været på php.net, men jeg forstår det desværre ikke.
Hvis jeg har 2 eksterne scripts, som skal kaldes med denne funktion, og de fx. ligger her:
www.hjemmeside1.dk/backup.php
www.hjemmeside2.dk/email.php
Kan du vise, hvordan jeg skriver linjerne med file_get_contents().
Avatar billede pidgeot Nybegynder
11. juli 2008 - 12:21 #5
<?PHP
file_get_contents('http://www.hjemmeside1.dk/backup.php');
file_get_contents('http://www.hjemmeside2.dk/email.php');
?>

De vil blive kaldt i den rækkefølge du skriver dem.
Avatar billede nemlig Professor
11. juli 2008 - 12:51 #6
Ser interessant ud - jeg afprøver senere i eftermiddag.
Og det skulle også fungere, selv om der står 20 kald.
Jeg vender tilbage med resultatet.
Avatar billede nemlig Professor
11. juli 2008 - 15:26 #7
Tusind tak for gode forklaringer - nu kører det perfekt.
Lige nu har jeg 8 forskellige kald, og det funger....
Ved du om der vil være problemer, hvis jeg fx. har 50 kald i samme fil?
Send blot et svar.
Avatar billede pidgeot Nybegynder
11. juli 2008 - 15:48 #8
Måske, måske ikke.

Et PHP script har en vis tidsgrænse på hvor længe det må køre, men beregningen af den tid skulle til en vis grad ignorere ventetid på eksterne kilder. Jeg ved ikke om file_get_contents er inkluderet der.

Da One kører safe mode, kan du ikke ændre ved det, men hvis dine handlinger kan udføres på 30 sekunder eller derunder, så vil du ikke opleve nogen form for problemer.
Avatar billede nemlig Professor
11. juli 2008 - 16:03 #9
Ok - nuværende script tager ca. 1 sekund og der er 8 kald. Så mon ikke jeg holder mig under 30 sekunder.
Jeg takker endnu engang.
Avatar billede nemlig Professor
13. juli 2008 - 21:36 #10
Må jeg lige stille et lille spørgsmål mere - i forlængelse af ovennævnte.

Hvis jeg kalder en fil1 på domæne1, som igen kalder 4 andre script-filer på samme domæne, skal jeg så fortsat anvende "file_get_contents" eller er det mere korrekt at anvende "include" eller "require".
Avatar billede pidgeot Nybegynder
13. juli 2008 - 21:45 #11
Jeg regner med du skal have lavet den fil1.

Det korrekte er at bruge include/require (hvilken af de to er mere eller mindre op til dig selv), fordi det andet bliver noget rod (du får koden hvis du ikke har domænet med, og det er spild af tid at lave en ny HTTP request mod sig selv ved at angive en fuld URL).

Det har dog den "hage" at du ikke kan sende parametre med (i form af $_GET). Du skal så enten skrive de scripts om så de ikke bruger $_GET, eller også skal du sætte de nødvendige ting inden du bruger include/require.
Avatar billede nemlig Professor
13. juli 2008 - 22:40 #12
OK - det er jeg med på. Mange tak for svaret.
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