how to get output of proc_open() how to get output of proc_open() php php

how to get output of proc_open()


Your code more or less works for me. time prints its output to stderr so if you're looking for that output, look in your file files/temp/error-output.txt. The stdout pipe $pipes[1] will only contain the output of the program ./a.

My repro:

[edan@edan tmp]$ cat proc.php <?php$cwd='/tmp';$descriptorspec = array(    0 => array("pipe", "r"),    1 => array("pipe", "w"),    2 => array("file", "/tmp/error-output.txt", "a") );$process = proc_open("time ./a a.out", $descriptorspec, $pipes, $cwd);echo stream_get_contents($pipes[1]);fclose($pipes[1]);?>[edan@edan tmp]$ php proc.php a.out here.[edan@edan tmp]$ cat /tmp/error-output.txtreal    0m0.001suser    0m0.000ssys     0m0.002s


this is another example with proc_open().I am using Win32 ping.exe command in this example. CMIIW

set_time_limit(1800);ob_implicit_flush(true);$exe_command = 'C:\\Windows\\System32\\ping.exe -t google.com';$descriptorspec = array(    0 => array("pipe", "r"),  // stdin    1 => array("pipe", "w"),  // stdout -> we use this    2 => array("pipe", "w")   // stderr );$process = proc_open($exe_command, $descriptorspec, $pipes);if (is_resource($process)){    while( ! feof($pipes[1]))    {        $return_message = fgets($pipes[1], 1024);        if (strlen($return_message) == 0) break;        echo $return_message.'<br />';        ob_flush();        flush();    }}

Hope this helps =)