2011-03-18 76 views
0

只是感興趣的是你的專業人員認爲,因爲我不久前遇到了執行運算符,並且認爲它看起來更整潔,更清晰,但使用執行運算符還是內置php函數像exec()或system()一樣從未見過它使用過?php的系統執行運算符

//execution operator 
<?php 
    echo '<pre>'; 
    echo `netstat -a`; 
    echo '</pre>' 
?> 



<?php 
echo '<pre>'; 
echo system('netstat -a'); 
echo '</pre>' 
?> 

回答

1

反引號運算符與shell_exec相同。不同的system/exec/shell_exec/passthru等命令有一些區別,詳情請參考the manual。如果您要查找的是shell_exec的行爲,反引號操作符就好了。

1

這完全取決於它的用途。

如果它只是一個快速shell到另一個程序,你只需要它打印到標準輸出,然後反引號很好。 @ deceze的文章描述了這些工作的細節。

但是,如果您需要與其他程序更強大的互動水平,那麼沒有什麼比擊敗proc_open。當使用程序的stdinstdoutstderr時,它可以讓您使用streams的全部功能。

+0

啊怎麼我做玩弄它,當一個簡單的遠程命令腳本,不知道爲什麼人們會使用複雜的管道和流ECT,所以一個簡單的命令,可輸出結果返回瀏覽器返回蜱就足夠了。謝謝 – 2011-03-18 04:52:53

1

exec()在PHP中有點用詞不當。實際的系統調用會終止正在運行的程序,並通過執行其他操作來替換它。但是PHP在幕後分流,所以它的工作原理幾乎與system()相同。

行爲上的差異是system不緩衝結果。但是你很少會從PHP內部注意到,因爲無論如何你都會得到完整的結果。這對於CLI應用程序來說非常重要。

對於下級-C背景:Difference between "system" and "exec" in Linux?