感兴趣的是你们的专业人士在不久前遇到执行操作员的想法并且认为它看起来/使用更简洁,更清晰但是使用执行操作符或内置php函数(例如exec)之间存在差异()或system()从未见过以前使用过吗?
//execution operator
<?php
echo '<pre>';
echo `netstat -a`;
echo '</pre>'
?>
<?php
echo '<pre>';
echo system('netstat -a');
echo '</pre>'
?>
答案 0 :(得分:1)
反引号运算符与shell_exec
相同。不同的system
/ exec
/ shell_exec
/ passthru
等命令之间存在一些差异,有关详细信息,请参阅the manual。如果您要查找的是shell_exec
的行为,则反引号运算符就可以了。
答案 1 :(得分:1)
完全取决于它的用途。
如果它只是一个快速的shell到另一个程序,你只需要它打印到stdout,那么反引号是好的。 @ deceze的帖子描述了它的工作原理。
但是如果你需要与其他程序进行更强大的互动,那么没有什么比proc_open
好。在使用程序的stdin
,stdout
和stderr
时,它可让您充分发挥streams的强大功能。
答案 2 :(得分:1)
exec()
有点用词不当。实际的系统调用将终止正在运行的程序,并通过执行其他操作来替换它。但PHP在幕后进行分叉,因此它与system()
几乎完全相同。
行为上的差异是system
不会缓冲结果。但是你很少会注意到PHP中的内容,因为无论如何你都会得到完整的结果。它仅对CLI应用程序最重要。