1. 程式人生 > >php執行shell不阻塞方法

php執行shell不阻塞方法

文件 har /dev/null 意思 程序 /usr home 數組 true

大家都知道php執行系統命令的方法有:
system() 輸出並返回最後一行shell結果。
exec() 不輸出結果,返回最後一行shell結果,所有結果可以保存到一個返回的數組裏面。
passthru() 只調用命令,把命令的運行結果原樣地直接輸出到標準輸出設備上。

這些方法都會等待命令執行完畢後才會繼續執行後續的程序
不阻塞可以將命令輸出的內容寫入系統的一個回收站文件,這樣程序就不會阻塞
例如:

shell_exec("/usr/local/php/bin/php /www/t.php  > /dev/null 2>&1 &");//可以執行

shell中可能經常能看到:>/dev/null 2>&1

命令的結果可以通過%>的形式來定義輸出

/dev/null 代表空設備文件

代表重定向到哪裏,例如:echo “123” > /home/123.txt
1 表示stdout標準輸出,系統默認值是1,所以”>/dev/null”等同於”1>/dev/null”
2 表示stderr標準錯誤
& 表示等同於的意思,2>&1,表示2的輸出重定向等同於1

那麽本文標題的語句:
1>/dev/null 首先表示標準輸出重定向到空設備文件,也就是不輸出任何信息到終端,說白了就是不顯示任何信息。
2>&1 接著,標準錯誤輸出重定向等同於 標準輸出,因為之前標準輸出已經重定向到了空設備文件,所以標準錯誤輸出也重定向到空設備文件。

php執行shell不阻塞方法