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

上記のスクリプトをブラウザから実行すると、10秒間ロードされ、スクリプトの出力が画面にダンプされます。もちろん、これは正常です。しかし、シェルスクリプトによってSTDOUTに書き込まれたデータをリアルタイムで画面に表示したい場合、それを行う方法はありますか?

4

3 に答える 3

2

これを試して:

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

それは私にとってとてもうまくいきます。

于 2011-12-30T12:28:52.103 に答える
2

前に述べたように passthru() または popen() を試していない場合は、必要に応じてコマンドの実行をより詳細に制御できる proc_open() を追加します。

于 2010-04-08T15:30:18.463 に答える
1

passthru()またはpopen( ) を試してください

コードは次のようになります。

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

@wik が以下に提案しているように、popen の代わりに proc_open を試すこともできます。同様の方法で動作するはずです。

于 2010-04-08T14:27:02.990 に答える