zoomsalabim Skrevet 30. juli 2012 Del Skrevet 30. juli 2012 Hei! Er det mulig å sette en timeout på (for eksempel ett halvt sekund) for en enkelt php funksjon? Jeg vet hvorda jeg kan gjøre dette med systemkommandoer fra PHP, men tenkte på en ren php-funksjon. Lenke til kommentar
MrDonutseeker Skrevet 30. juli 2012 Del Skrevet 30. juli 2012 Man kan sleepe prosessen ved hjelp av http://no.php.net/manual/en/function.usleep.php, men da holder du igjen hele prosessen og det er ikke optimalt. Mitt tips (hvis jeg antar rett at du skal ha dynamisk innhold) er å heller ha et ajax-kall på en php-side hvert sekund (eller senere/oftere) og oppdatere viewet om det er forandring Her har du funksjonene setTimeout og setInterval i JavaScript som fungerer utmerket til videre eksperimentering. Lenke til kommentar
zoomsalabim Skrevet 30. juli 2012 Forfatter Del Skrevet 30. juli 2012 Det er ikke noen ideell løsning når jeg har funksjoner som jeg vet kan henge seg i hele den globale timeouten. Selv om klienten slutter å se etter skriptet vil jo skriptet fortsette å kjøre på serveren til det timer ut. Ideelt sett burde man kunne starte en php-funksjon i "bakgrunnen", sjekke om den er ferdig med noen millisekunders mellomrom og kunne kanselere funksjonen om en grenseverdi overskrides. Det blir nok å hacke til noe med exec, det er en bedre løsning enn å måtte la serveren ta interne ting via klient i javascript. Lenke til kommentar
Ernie Skrevet 30. juli 2012 Del Skrevet 30. juli 2012 Du kan splitte ut egne «prosesser» i PHP med pcntl_fork Hvor godt PCNTL fungerer i praksis aner jeg ikke, men dette skal kunne kjøre i parallell med hverandre. Lenke til kommentar
dahuff Skrevet 31. juli 2012 Del Skrevet 31. juli 2012 Kan ofte være verdt å sette opp en cron jobb for de tunge operasjonene. Så kan man f.eks. vise framdrift og andre lette operasjoner i nettleseren. Det er ikke bra å la nettleseren vente på serveren. Lenke til kommentar
zoomsalabim Skrevet 1. august 2012 Forfatter Del Skrevet 1. august 2012 Utfordringen er at jeg har ett par oppgaver som bare låser seg, og jeg vet at om de ikke svarer på ett halvt sekund så henger de til skriptet timer ut av seg selv. Nå er det systemkall, så problemet kan løses med å kjøre exec() med en systemkommando i bakgrunnen og sjekke prosessid'en fra det kallet i bakgrunnen og deretter kjøre kill på prosessen og gjøre feilretting om den ikke er borte på x antall millisekunder. Leser om denne fork-funksjonen for å se om den kan brukes uten altfor grisete programmering. Lenke til kommentar
dahuff Skrevet 1. august 2012 Del Skrevet 1. august 2012 (endret) Du kan kanskje eksperimentere med set_time_limit(n) eller ini_set(max_execution_time), men jeg har en mistanke om at du må revurdere designet ditt dersom du tror du må bruke fork, time limit eller exec() fra ett kall fra nettleseren. I alle fall bør det gjøres med forsiktighet. Endret 1. august 2012 av dahuff Lenke til kommentar
Ernie Skrevet 1. august 2012 Del Skrevet 1. august 2012 Hvis det er noe som har en tendens til å henge seg, så ser jeg ikke problemet med å splitte det ut. Man kan oppnå noe kontroll over eksekveringen i stedet for at det tar lang tid og når timeout. Går det et sekund kan man f.eks. sende SIGHUP, SIGTERM eller SIGKILL avhengig av hvor aggresiv man ønsker å være, og bli kvitt «problemet». Lenke til kommentar
TheClown Skrevet 9. august 2012 Del Skrevet 9. august 2012 Nøyaktig hva er det scriptet ditt gjør da, siden den ofte kræsjer? Om dette skjer er det tegn på at logikken bak ting er galt. Du burde undersøke om du kan gjøre programmeringen annerledes eller cache/mellomlagre ting. Lenke til kommentar
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å