- $stdout_open = true;
- $stderr_open = true;
- while($stdout_open || $stderr_open) {
- $pipes_to_check = array();
- if($stdout_open) {
- $pipes_to_check[] = $pipes[1];
- }
- if($stderr_open) {
- $pipes_to_check[] = $pipes[2];
- }
- $readables = readable_sockets($pipes_to_check);
- if($readables === false) {
- die('select failed');
- }
- foreach($readables as $pipe) {
- $ret = fread($pipe, 4096);
- if($ret === false) {
- die('fread (in exec_pipe) failed');
- }
- if($pipe = $pipes[1]) {
- if($ret == '') {
- fclose($pipes[1]);
- $stdout_open = false;
- } else {
- $stdout .= $ret;
- }
- }
- if($pipe = $pipes[2]) {
- if($ret == '') {
- fclose($pipes[2]);
- $stderr_open = false;
- } else {
- $stderr .= $ret;
- }
- }
- }
+ while (!feof($pipes[1])) {
+ $chunk = fread($pipes[1], 1024);
+ $stdout .= $chunk;
+ sleep(0.5);