mysjkin Skrevet 21. april 2006 Skrevet 21. april 2006 Jeg lager en php-applikasjon hvor det blant annet skal være mulig å laste opp en datafil til en mysqldatabase. Imidlertid, jeg har fått et problem med at apache timer ut når dette tar for lang tid. I error_log kommer det en "PHP Fatal error: Maximum execution time of 30 seconds exceeded in C:\\Program Files ..." Jeg regner med at jeg kan sette opp max excecution time for apache, men det blir jo bare en midlertidig løsning, så jeg ønsker å kunne kalle en ny php-prosess som kjøres i bakgrunnen på serveren og laster opp dataene. Noen som har noe forslag til hvordan dette kan gjøres? Apache 2.0 php 4, windows XP (Jobbserver, så det hjelper ikke med løsninger som forutsetter andre versjoner eller OS) M.
Ernie Skrevet 21. april 2006 Skrevet 21. april 2006 (endret) max_execution_time er en variabel i php ikke apache. Denne kan justeres opp enten manuelt i php.ini eller muligens med en ini_set som vil endre konfigurasjonen midlertidig for det scriptet som kjøres (i såfall vil være ini_set('max_execution_time', antall sekunder du trenger) ). max_execution_time er ikke noe man klarer å komme seg unna ved kjøring av et php-script såvidt jeg veit. Endret 21. april 2006 av Ernie
mysjkin Skrevet 21. april 2006 Forfatter Skrevet 21. april 2006 Takk, jeg regnet med at det var en apache variabel, men i alle fall, det er ikke en god løsning å endre på den. M.
Ernie Skrevet 21. april 2006 Skrevet 21. april 2006 Takk, jeg regnet med at det var en apache variabel, men i alle fall, det er ikke en god løsning å endre på den. M. 5959967[/snapback] Vel, meg bekjent er det den eneste løsningen på problemet. Du kan som sagt ikke gå rundt den begrensningen. Skal du kunne kjøre noe "uendelig" må du nok enten skrive det som et eget program i et annet språk eller sette max_execution_time _veldig_ høyt midlertidig med ini_set hvis det er mulig.
mysjkin Skrevet 21. april 2006 Forfatter Skrevet 21. april 2006 Aah,got it. Jeg trodde jeg kunne unngå den med å kjøre et script frakoblet fra apache. hmmm. får se hva jeg kan få til. M
Peter Skrevet 21. april 2006 Skrevet 21. april 2006 (endret) http://no.php.net/manual/en/function.ignore-user-abort.php Sjekk ut noen av kommentarene der, mulig de kan hjelpe deg, spesielt den nest siste. Med litt miksing og triksing, kan du sjekke hvor lenge skriptet ditt har kjørt, og lage et slags rekursivt, men asynkront skript som sender en oppgave til "seg selv" like før du når max execution time, som da (antakelig) betyr at du kan lage noe som kjører evig, evt. så lenge du trenger. Endret 21. april 2006 av Nazgul
magikern Skrevet 21. april 2006 Skrevet 21. april 2006 ta en titt på denne: http://magikern.no-ip.org/misc/nuke_to_smf.phps forferdelig rotete koder, men det skal være mulig å forstå essensen av det, se spesielt på bruken av pastTime() funksjonen, kort forklart stoppes prosessen etter X tid og starter igjen fra stoppestedet etter en liten stund...
mysjkin Skrevet 9. mai 2006 Forfatter Skrevet 9. mai 2006 (endret) Takk skal dere ha, men jeg tror jeg ender opp med noen ajax-greier. php backend som leser noen linjer i slengen, dette styres av javascript på browseren, selvfølgelig er det en fordel å unngå javascript, men med dette systemet får også brukeren feedback under kjøringen. Desuten så blir dette et (i utgangspunktet) internt system, så jeg kan forlange js på. Utvikler med firefox men tester med internet exploder og opera. Edit: Et demoscript ligger på http://sickel.net/prog/ajax-upload.php M. Endret 9. mai 2006 av mysjkin
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå