Gå til innhold

CRONJOB erstatning - To php filer i uendelig loop?


Anbefalte innlegg

Findus: hvordan hadde du tenkte han skulle kjøre dette skriptet på webserveren sin da?

 

Med mindre han har ssh tilgang der (isåfall kan han bruke hva han vil av tilgjengelige programmeringsspråk) så er det per def umulig å komme utenom begrensningene til mod_php, dvs max executiontime etc..

Lenke til kommentar
Videoannonse
Annonse

ouh... det var andre boller ja..

 

kjenner du andre programmeringssrpåk enn php?

 

da er det bedre (mye bedre) å logge på ssh, starte en prosess der som får stå og gå så lenge den vil, (helt til den blir drept av en sur sysadmin)

 

også sjekke den jevnlig, kanskje la den sende en email en gang i døgnet.

 

ta en tur innom perlforumet og beskriv spørsmålet ditt der!

 

php er på grensen til å være direkte dårlig som kommandolinjespråk.

Lenke til kommentar
du har så jevn og stor trafikk til index.html at du vil bruke disse hitene til å trigge din cronjob? pass isåfall på at det ikke tar lang tid!

 

Kjedelig for en besøker å vente i 10 sekunder på å få lastet siden bare fordi du utnytter han til å kjøre cronjobber.

 

Torbjørn, den oppgave main.php her skal utføre, er så enkel og så liten, at den er utført i løpet av 1/10 sekund antar jeg.

Du kan faktisk se "prototypen" på main.php her, og hvilken oppgave den skal utføre:

 

http://forum.programmer.no/index.php?showtopic=252106

 

Det du ser der er likevel kun en nesten ferdig utgave av filen slik den har blitt nå, hvor jeg faktisk kjører filen ved hjelp av autorefresh i min browser, men det er jo en fullstendig uholdbar løsning, da funksjonen går i dass i det øyeblikk jeg kobler meg av nett og går til køys.

 

Så hvis det er mulig å utnytte trafikk til den tidliger omtalte INDEX.HTML som triggerfunksjon for main.php (dog med omtalte validering 60 sekunder), så ville jeg blitt mer enn fornøyd hvis noen kunne hjelpe med å få det til.

 

Dette også fordi jeg er enda MINDRE bevandret i PERL, og vil derved være TOTALT TOTALT GRØNN hvis jeg skulle bevege meg inn på PERL forumet som du foreslår. Det vil utsette dere for tålmodighetsprøver på linje med far og mor som skal lære sin baby og si "mamma og pappa" ;)

 

Så hvis noen kan hjelpe meg å få det til i php, så vil jeg selvsagt være enormt taknemlig for det.

 

Kommer jeg inn i PERL forumet vil dere kanskje rive av dere håret i frustrasjon? :blush:

 

Mvh

Roger

Endret av RogerM
Lenke til kommentar

forslag: rename index.html til index.php og sett inn følgende snutt

 

index.php

<?php

// KOBLE TIL MYSQL

$tid = time()-60;

if (mysql_result(mysql_query("SELECT sist_oppdatering FROM fake_crown"),0, "sist_oppdatering") < $tid) {
include "main.php";
mysql_query("UPDATE fake_crown SET sist_oppdatering='".time()."'") || die(mysql_error()); 
}
?>

 

(Har ikke testet)

Lenke til kommentar

Fjartan, desverre, jeg kan ikke rename INDEX.HTML til index.php, da den egentlig er en SSI generert index.SHTML

 

Sorry jeg glemte å si det. Jeg omtalte den bare som index.HTML for å skille den fra den oppgave jeg egentlig er ute etter å løse med main.php, og tenkte da at det måtte være mulig å implementere et kall til main.php også fra en index.SHTML fil(eller *.HTML) uten å omgjøre den til *.php

 

Huff :-)

 

Dessuten foreslår du en løsning som vil kreve at jeg får tilgang til å modifisere REMOTE DATABASE med å tilføye en fake_crown tabell, og det har jeg selvsagt ikke mulighet til. Jeg har kun lesetilgang i REMOTE DATABASE.

 

Roger

Endret av RogerM
Lenke til kommentar
kan du si med ord det du ønsker at cronjobben skal gjøre, istedet for å vise til kode som gjør det?

 

ie "hente ut html fra en side og skrive det til en lokal kopi" eller noe lignende.

Torbjørn

 

DETTE ER HVA JEG TRENGER HELP TIL

cronjobben skal kun hvert 60 sekund aktivere en php fil ved navn f.eks main.php.
Dette er det ENESTE jeg trenger hjelp til å få til.

 

 

DETTE TRENGER JEG IKKE HJELP TIL, da filen main php er ferdig kodet og virker som den skal

main.php tar seg av den oppgave som skal utføres, altså hente data fra en REMOTE dabase og skrive ut innholdet til en *html fil.

 

 

Alt jeg trenger hjelp til er å få kjørt main.php i faste intervaller på 60 sekunder, altså noe som erstatter den funksjon en cronjob ville kunne utføre for meg med hensyn til å aktivere main.php hvert 60 sekund

 

Håper dette var enkelt formulert?

 

Roger

Lenke til kommentar

Om du har SSH-tilgang, er det ikke da mulig å kjøre et script med en uendelig loop. Ved å sette max_execution_time = 0, vil du heller ikke ha noe problem med at scriptet timer ut.

 

Et PHP script kjøres så lenge browseren opprettholder kontakten. Det er derfor ikke noen god løsning det du først foreslo.

 

En evigvarende prosess som hele tiden opprettholder kontakten med php-scriptet, vil la scriptet kunne leve evig.

 

Uansett, en evigvarende prosess på en webserver er sjeldent noe hostene liker. Kanskje noen er så snille at de kan kjøre en cronjob for deg? Om ikke dette er en løsning, vil jeg anbefale å bruke løsningen lumted nevnte.

Lenke til kommentar

ok, her er den ultimate løsningen:

 

1) log på med ssh

2) lag en fil som heter "myfile.bash"

3) putt følgende inn i fila:

while true; do echo `date`; wget --delete-after http://adresse/til/din/main.php; sleep 60; done

4) skriv screen

5) skriv bash myfile.bash

6) trykk tastene ctrl+a og deretter d

7) len deg tilbake og nyt livet

Endret av Torbjørn
Lenke til kommentar

Lumted foreslår meg en løsning med å legge til en timestamp i databasen.

 

Dette ville vært ok om databasen var lokal (min), men desverre snakker vi her om en remote database hvor jeg kun har lesetilgang.

 

Og det er heller ingen løsning å få eieren til å modifisere databasen ved å tilføye timestamp, da dette jo ikke reduserer hans båndbredde krav, som sier at han ikke vil ha kall til databasen oftere enn hvert 60 sekund.

Lenke til kommentar
ok, her er den ultimate løsningen:

 

1) log på med ssh

2) lag en fil som heter "myfile.bash"

3) putt følgende inn i fila:

while true; do echo "kjører phpfil...\n"; wget --delete-after http://adresse/til/din/main.php; sleep 60; done

4) skriv screen

5) skriv bash myfile.bash

6) trykk tastene ctrl+a og deretter d

7) len deg tilbake og nyt livet

Torbjørn

 

Dette ser jo fantastisk bra og enkelt ut

 

Kan du forklare i detaljer hva den kommandostrengen egentlig utfører, så jeg vet mer i detaljer hva jeg kan forvente av reaksjoner kommentarer fra sysadmin?

 

Roger

Lenke til kommentar

han vil se at du har en prosess som står og går og som har gått i flere dager og han vil lure på hva i all verden dette er for noe.

 

han vil så titte i myfile.bash og skjønne hva som skjer og si enten "ok", eller "din hacker satan" og konsekvensene blir deretter :)

 

mulig du ikke har screen installert. isåfall får du kjøre nohup bash myfile.bash

Lenke til kommentar

Hehe....dette må bare prøves, får håpe sysadmin er snill med meg, jeg hoster vel over 15 ulike websites fordelt på separate kontoer der, så jeg er nok en av de over middels store kunder der. Får satse på at han ikke vil miste meg :-)

 

Mange takk Torbjørn

 

Dog kommer jeg tilbake og plager dere senere, om jeg ikke får det til å virke :-)

 

Mvh

Roger

Lenke til kommentar

Huff

 

Hverken "screen" eller "nohup bash myfile.bash" kommandoene virket

 

De gir meldinga:

 

bash-2.05a$ screen

bash: screen: command not found

bash-2.05a$ nohup bash myfile.bash

bash: nohup: command not found

 

 

Så er jeg like langt

Lenke til kommentar

huff igjen

 

Jeg kjørte

 

bash myfile.bash

 

direkte i promten, og det hele løp fullstendig løpsk, skjermen ble pumpet full av rullende meldinger i loop, feilmeldinger, så nå står den vel der og går i villa helt til serveren knekker sammen?

 

Må kjappe meg inn på helpdesken for å forklare.....FAEN OG...

 

SLETTA fila myfile.bash, håper dette hjelper til å stoppe den prosessen...

 

Får ikke brukt promten til å sjekke prosesser heller, de har visst disabla en hel rekke kommandoer

 

Roger

Endret av RogerM
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...