php執行shell不阻塞方法
阿新 • • 發佈:2017-12-07
文件 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不阻塞方法