views:

62

answers:

2
<?php
  // Execute a shell script
  $dump = shell_exec('bigfile.sh'); // This script takes some 10s to complete execution
  print_r($dump); // Dump log to screen
?>

When the script above is executed from the browser, it loads for 10s and the dumps the output of the script to the screen. This is, of course, normal. But if I want the data written to STDOUT by the shell script to be displayed on the screen in real-time, is there some way I could do it?

+1  A: 

Try passthru() or popen()

The code will look something like this:

<?php 
        $fp=popen("bigfile.sh","r");
        while (!feof($fp)) { 
                $results = fgets($fp, 256); 
                echo $result; 
                flush(); 
        } 
?> 

As @wik suggest below you can also try proc_open instead of popen it should work in a similar fashion.

Ivo Sabev
Could you add a code example for either of them, Ivo? Possibly a replacement for my code above?
Amar Ravikumar
+2  A: 

I would add proc_open() which gives you much more control over command execution if you need it, if not try passthru() or popen() as it was mentioned before.

Wojtek