2012-06-28 43 views
5

我使用exec()來執行命令,無論是Linux或Windows。PHP執行命令和日誌輸出無需等待

如何執行一個命令,linux和windows,並記錄輸出而不等待?

我知道Linux的,不等待輸出:command* > /dev/null 2>/dev/null &

並記錄爲Linux輸出:command* > /path/to/log.txt 2>/path/to/error.txt

你會如何去記錄和在一個命令將其設置爲背景?窗戶怎麼樣?

+1

您可以執行exec(),包括將輸出重定向到一個文件,然後通過PHP讀取文件。 – ametren

+1

'&'最後把東西放在後臺。但是這在windows下不起作用,那就是linux。 – hakre

+0

在windows中,我相信你只是用'start' – ametren

回答

12

在Linux上,你可以這樣做:

exec('command* > /dev/null 2>/dev/null &'); 

在Windows上,你可以這樣做:

pclose(popen('start /B cmd /C "command* >NUL 2>NUL"', 'r')); 

兩個例子都禁用輸出和錯誤,那些去/dev/null(Linux)或NUL(窗口),這意味着它們存儲在「無處」。

您可以將它們替換爲系統上的有效路徑。

在Linux上,末尾的&將其置於後臺。在Windows上,這更復雜,需要start來調用進程,而cmd需要重定向這些流。

+0

我也想把它記錄下來 – user1105430

+2

你可以直接輸出到一個文件,然後fopen /!feof日誌文件 –

+0

+1正是我所想的 – ametren