Avatar billede nemlig Professor
21. marts 2011 - 16:32 Der er 10 kommentarer og
1 løsning

Flere scripts afvikles med file_get_contens(), men vis resultat løbende

Hejsa.
Jeg kalder nogle eksterne scripts, som returnerer en værdi:

$res1 = file_get_contens('script1');
echo $res1."<br>";
$res2 = file_get_contens('script2');
echo $res2."<br>";
$res3 = file_get_contens('script3');
echo $res3;

Er det muligt at få vist værdi af $res1, når script1 er afviklet, altså inden script2 går i gang, og det sammme med $res2 inden script3 går i gang.

Lige nu vises de 3 resultater til sidst, og får jeg fx. en time-out inden script3 er kørt, så vises der ikke noget resultat om de første 2.
Avatar billede erikjacobsen Ekspert
21. marts 2011 - 16:38 #1
Måske - kig på http://php.net/flush
Avatar billede nemlig Professor
21. marts 2011 - 18:16 #2
Har prøvet lidt, men det virker ikke umiddelbart.
Jeg kan i phpinfo() se en linje, der hedder:

implicit_flush = off

Måske det gør, at funktionen ikke virker.
Avatar billede jakobdo Ekspert
21. marts 2011 - 18:49 #3
Der er også nogle setups, de kræver X mængde data, inden en flush() sker.

Du bør måske overveje en ajax løsning.
Så du kalder dine script via et ajax kald, som så returnere svaret, når der kommer svar.
På den måde vil et script ikke sløve alle andre.
Avatar billede nemlig Professor
21. marts 2011 - 19:12 #4
#3 Vil det med Ajax være muligt, at aktivere script1 og afvente svar (sker måske 30 sekunder efter) og når svar modtaget så kalde script2 og afvente svar, og derefter script3 osv.
Og på den måde undgå time-out?
Avatar billede jakobdo Ekspert
21. marts 2011 - 19:31 #5
Det kunne du godt gøre ja.
Men om ajax kan vente 30 sekunder, er jeg faktisk ikke sikker på.
Avatar billede nemlig Professor
21. marts 2011 - 19:48 #6
Nu skal jeg lige være sikker på, at vi ikke taler forbi hinanden.

Målet er, at der skal afvikles 3 x scripts via file_get_contens() og ønsket er, at der kun skal klikkes én gang på et link for at afvikle dem.
Hvert af de 3 scripts har en afviklingstid på ca. 30 sekunder, hvorfor jeg oplever timeout efter ca. 1 minut. Og så ved jeg ikke hvor mange af scriptene, der er afviklet, da jeg ikke når at få noget output.

Kan man gøre det sådan her med ajax for at undgå timeout:
1. Klik på et link (noget ajax-kode), som afvikler scriptnr. 1 via file_get_contens(script1)
2. Når script1 er afviklet, returnerer dette script en statusværdi (godt det godt eller skidt)
3.  Hvis det gik godt, kalder ajax-koden script nr. 2 via file_get_contens(script2)
4. Når script2 er afviklet, returnerer dette script en statusværdi (godt det godt eller skidt)
5. Hvis det gik godt, kalder ajax-koden script nr. 3
osv.

Ønsket er altså at afvikle 3 x scripts, som samlet set tager ca. 1½ minut og undgå timeouts.
Avatar billede jakobdo Ekspert
21. marts 2011 - 19:51 #7
Det burde du kunne lave med ajax ja.
Men kunne jo evt. gemme svaret i en db, så er du da sikker på, at det ikke bliver afviklet flere gange.
Avatar billede nemlig Professor
23. marts 2011 - 11:26 #8
Tak til Erik og Jakobdo.
Jakobdo smid et svar.
Avatar billede erikjacobsen Ekspert
23. marts 2011 - 11:32 #9
Ingen point til mig, tak.
Avatar billede jakobdo Ekspert
23. marts 2011 - 12:27 #10
Svar!
Avatar billede jakobdo Ekspert
12. april 2011 - 09:25 #11
Takker for point.
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