2010-04-08 52 views
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秒,並將腳本輸出轉儲到屏幕上。這當然是正常的。但是,如果我要顯示在實時在屏幕上通過shell腳本寫入stdout數據,有一些方法我能做到這一點?shell_exec()in PHP

回答

1

嘗試passthru()popen()

該代碼將是這個樣子:

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

由於@wik建議下面你也可以嘗試proc_open代替POPEN應該以類似的方式工作。

+0

您可以加入一個代碼示例爲其中一方,伊沃?可能是我的代碼上面的替代品? – 2010-04-10 01:09:50

2

我想補充proc_open(),它爲您提供了命令執行更多的控制,如果你需要它,如果不嘗試中繼()或POPEN(),因爲它是前面提到的。

2

試試這個:

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

它爲我的偉大工程。