Вызвать внешний скрипт оболочки из PHP и получить его идентификатор процесса

Как я могу вызвать внешний скрипт (или, альтернативно, внешний PHP-скрипт) из самого PHP и получить его идентификатор процесса в том же скрипте?

$command = 'yourcommand' . ' > /dev/null 2>&1 & echo $!; '; $pid = exec($command, $output); var_dump($pid); 

Если вы хотите сделать это строго с помощью инструментов, которые PHP дает вам, а не специфичных для Unix wizardry , вы можете сделать это с помощью proc_open и proc_get_status , хотя необходимость передать спецификацию дескриптора в proc_open делает неприятным использование:

 <?php $descriptorspec = [ 0 => ['pipe', 'r'], 1 => ['pipe', 'w'], 2 => ['pipe', 'w'] ]; $proc = proc_open('yourcommand', $descriptorspec, $pipes); $proc_details = proc_get_status($proc); $pid = $proc_details['pid']; echo $pid;