Avatar billede madjor5 Nybegynder
12. september 2006 - 13:40 Der er 6 kommentarer

Timeout på scripts

Hey alle,

Jeg har et problem i form af, at jeg skal i korte udtræk køre et job der trækker nogle data ud af en database, og skriver det ned i en txt fil.

Problemet er ikke at lave det så det fungerer, men problemet består i at det er store mængder, og derfor timer browseren ud.

Nu vil jeg så lave det som et cron-job på apache...

Mit spg. går på hvordan jeg kan køre scriptet mest driftsikkert.
Er der ex. timeout på et cron-job? Skal jeg i så fald få et cron-job til at eksekvere et andet script på serveren, der får det til at køre uden timeout. Problemet her er, at der ALDRIG må opstå timeout på scriptet, da der så mistes meget vitale data!

Er der nogle der kan skematisere kort for mig, hvad jeg skal gøre, om jeg skal lave en socket åbning til et script, der så bare vil ligge og køre i baggrunden?

Den grundlæggende ide er, at den skal udføre arbejdet og så sende filen til en email, eller et link til filen, hvis den er for stor! Så den kan egentlig godt lave det om natten (cron-job)...

Håber nogle kan give mig lidt input til at løse problemstillingen!
Avatar billede coderdk Praktikant
12. september 2006 - 15:41 #1
Hvor meget kontrol har du over serveren? Kan du få lov at smide:

set_time_limit(0);

i dit script? For så er du ude af det problem...
Avatar billede olebole Juniormester
12. september 2006 - 15:45 #2
<ole>

Det er vel lidt en balancegang. Godtnok skriver du:
  "Problemet her er, at der ALDRIG må opstå timeout på scriptet, da der så mistes meget vitale data!"

- men serveren må vel heller ikke gå ned, hvis noget går galt eller hænger. Derfor skal du nok sætte et tal istedet for '0' i coderdk's ellers udmærkede løsning  :)

/mvh
</bole>
Avatar billede coderdk Praktikant
12. september 2006 - 15:51 #3
Hvis det er så vitale data som du skriver, så bør du jo nok bruge transactions... Hvis det er MySQL skal du kigge på InnoDB... Måske også dele det op i bidder så du laver en god bid ad gangen...
Avatar billede madjor5 Nybegynder
13. september 2006 - 07:34 #4
Det er fixet i måden som cron-jobbet kører på... det kører via cli, så på den måde undgår man webserver timeouts...

Tak google :-)

Men ellers så ja, der er sat en set_time_limit(0), der bruges til hvis jeg skal afvikle scriptet fra browseren!
Avatar billede olebole Juniormester
13. september 2006 - 12:53 #5
- så det gør med andre ord ikke noget, hvis serveren går ned(?)  :)

Der er rigtig gode grunde til, et script har en maximal eksekveringstid. At tillade uendelig eksekveringstid er at sætte vand over til alvorlige problemer ... forlæng i stedet tiden til en realistisk størrelse  ;o)
Avatar billede coderdk Praktikant
13. september 2006 - 13:03 #6
olebole, Ikke helt enig, i CLI har PHP ingen max limit, shell scripts kan og må typisk godt tage lang tid - Grunden til at der er en max execution time på web er sikkert for ikke at "genere" brugeren...
Fra php.net under CLI: "Due to endless possibilities of using PHP in shell environments, the maximum execution time has been set to unlimited. Whereas applications written for the web are often executed very quickly, shell application tend to have a much longer execution time."
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