phpshelldumpshell-execnear-real-time

shell_exec() in PHP


<?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?


Solution

  • 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.