2012-10-08 25 views
-1

我有一個PHP腳本,它需要一個表單的字段進行3次交替程序調用,其中第一個的輸出是第二個的輸入,依此類推。PHP - 調用外部程序並顯示進度

的問題是,我需要顯示每個程序調用,沒有什麼複雜的進步,我只是想展現3級不同的消息:

  • 系統調用ñ等待。
  • 系統調用N正在執行。
  • 系統調用N完成。

我試圖用不同的PHP函數,如exec(),popen()或proc_open()來做到這一點,但與這些瀏覽器等待,直到每次調用完成。 整個系統調用時間不會超過5分鐘,可能是3或4,因此,在每次通話中可能會放置一個計時器(可能是1.5分鐘),如果通話時間更長,那麼可以殺死當前的系統調用,請跳過以下調用並顯示錯誤消息。

你有什麼想法嗎?也許Ajax和JavaScript的組合可以成爲解決方案。提前致謝。

<?php 
/* 
    System Calls 
    This file is required in another main script 
    $projectPath and $projectName defined in the main script 
*/ 

//$mainHome = getcwd(); 

$home = $projectPath . $projectName; 
$temp = $home . "/temp/"; 
$calls = $temp . "CALLS"; 

$threads = array(); 

if(is_dir($temp)){ 
    //chdir($temp); 
    $FILE = fopen($calls, "r"); 
    while(($call = fgetcsv($FILE)) !== FALSE) { 
     //print_r($call); 
     $threads[] = implode(" ", $call); 
    } 
} 

//print_r($threads); 

$descriptorspec = array(0 => array("pipe","r"), 
         1 => array("pipe","w"), 
         2 => array("file","./phpError.log","a") 
); 

for ($a=0; $a<count($threads); $a++) { 
    print $threads[$a] . "<br/><br/>"; 
    exec($threads[$a]) 
    //$res = proc_open($threads[$a], $descriptorspec, $pipes, $temp); 
} 

//chdir($mainHome); 

?>

+0

向我們展示您的腳本! – TryHarder

+0

其實我只有一個腳本可以逐個執行每個調用。 – user1170251

回答

0

非常感謝您!最後,我開發了一個基於python CGI的解決方案,比我想象的要靜態一些,但符合團隊的期望。

問候