2014-02-23 124 views
0

我試着從一個控制檯的所有輸出線保存到代碼不工作,因爲它現在確實是PHP保存控制檯輸出

從控制檯獲取的最後一行,並把它寫在文件中的文件,也未啓用文件更新,直到我關閉控制檯運行 -

$start = exec("cd /ot/forgottenserver && ./tfs", $output); 

    $file = fopen("/var/www/public/stream.html", "a+"); 

    while ($start) 
    { 
    fwrite($file, $start."\n"); 
    } 

    fclose($file); 

我需要編寫每次我得到一個新的生產線從控制檯,並更新文件,而進程正在執行過程中。

回答

1

使用popen而不是exec。與exec(它執行該命令並且在處理完成後僅返回)相反,popen返回指向該過程的指針,您可以使用該指針來讀取輸出。

$h = popen('cd /ot/forgottenserver && ./tfs', 'r'); 

if ($h) { 
    while (!feof($h)) { 
     $buf = fread($h, 1024); 

     $fileHandle = fopen("/var/www/public/stream.html", "a+"); 

     if ($fileHandle) { 
      fwrite($fileHandle, $buf); 
      fclose($fileHandle); 
     } 
    } 

    pclose($h); 
}