shell_exec () в PHP - PullRequest
       70

shell_exec () в PHP

2 голосов
/ 08 апреля 2010
<?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
?>

Когда вышеуказанный скрипт выполняется из браузера, он загружается на 10 секунд и выводит вывод скрипта на экран. Это, конечно, нормально. Но если я хочу, чтобы данные, записанные в STDOUT скриптом оболочки, отображались на экране в режиме реального времени, есть ли способ, которым я мог бы это сделать?

Ответы [ 3 ]

2 голосов
/ 08 апреля 2010

Я бы добавил proc_open (), который дает вам гораздо больший контроль над выполнением команд, если вам это нужно, если не попробовать passthru () или popen (), как было упомянуто ранее.

2 голосов
/ 30 декабря 2011

Попробуйте это:

$handle = proc_open('bigfile.sh', array(0 => STDIN, 1 => STDOUT, 2 => STDERR), $pipes);
$status = proc_close($handle);

Это прекрасно работает для меня.

1 голос
/ 08 апреля 2010

Попробуйте passthru () или popen ()

Код будет выглядеть примерно так:

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

Как подсказывает @wik ниже, вы также можете попробовать proc_open вместо popen, он должен работать аналогичным образом.

...