Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : ausgabe eines mit php augerufenen shellscriptes



meinereinerseiner
28-10-2009, 12:48
Hallo,

ich möchte via browser ein shellscript auf eioem remothost aufrufen.
das shellsript hat eine laufzeit von 1-3 minuten und produziert alle 2 sekunden einen ".". das würde ich auch so im browser sehen wollen.

Problem ist, das der browser solange wartet bis das shellscript fertig ist und mir dann die 100 punkte auf einmal bringt.

kann ich die ausgabe so wie sie vom skript kommt dynamisch anzeigen lassen?

der aufruf erfolgt derzeit mit system($script, &$return);

thx,
tom

jeebee
28-10-2009, 23:09
$handle = popen("./sleep.sh 2>&1", 'r');

while($read = fread($handle, 1)) {
echo $read;
flush();
}
echo "\n";
pclose($handle);

Ist nicht sehr effizient, besonders da bei flush halt jedesmal das einzelne byte vom server in den browser gepusht wird.

meinereinerseiner
29-10-2009, 12:04
thx, werds mal testen.

msi
07-11-2009, 19:37
evtl brauchst nach dem flush() noch ein ob_flush()
achtung, wenn du mod_gzip oÄ verwendest, kannst du das caching nicht umgehen dann müsstest du das abstellen