2011-03-18 64 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?