Gå til innhold

Timeout - kjøre en separat php-prossess


Anbefalte innlegg

Skrevet

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.

Videoannonse
Annonse
Skrevet (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 av Ernie
Skrevet
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.

Skrevet (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 av Nazgul
  • 3 uker senere...
Skrevet (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 av mysjkin

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å
×
×
  • Opprett ny...