Оператор выполнения системы php - PullRequest
0 голосов
/ 18 марта 2011

Просто интересно, что вы, профессионалы, думаете, когда я наткнулся на оператор выполнения не так давно и подумал, что его удобнее и понятнее видеть / использовать, но есть ли разница между использованием оператора выполнения или встроенной функции php, такой как exec() или system () как никогда раньше не использовались?

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

Ответы [ 3 ]

1 голос
/ 18 марта 2011

Это полностью зависит от того, для чего он используется.

Если это просто быстрая оболочка для другой программы, и вам просто нужно то, что она напечатала на стандартный вывод, тогда обратные помехи в порядке.Пост @ deceze описывает детали того, как это работает.

Но если вам нужен более мощный уровень взаимодействия с другой программой, то ничто не сравнится с proc_open.Это позволяет вам использовать полную мощность потоков при работе с stdin, stdout и stderr.

программы.
1 голос
/ 18 марта 2011

exec() в PHP немного ошибочно.Фактический системный вызов завершит работающую программу и заменит ее, выполнив что-то еще.Но PHP делает разветвление за кулисами, так что он работает почти идентично system().

Различие в поведении заключается в том, что system не буферизует результаты.Но вы будете редко замечать это изнутри PHP, так как вы все равно получите готовые результаты.В основном это важно только для приложений CLI.

Для фона нижнего уровня C: Разница между "system" и "exec" в Linux?

1 голос
/ 18 марта 2011

Оператор обратного удара идентичен shell_exec.Существуют некоторые различия между различными командами system / exec / shell_exec / passthru и т. Д., Пожалуйста, обратитесь к руководству для получения подробной информации.Если то, что вам нужно, это поведение shell_exec, оператор обратного тона в порядке.

...