Как я могу вызвать внешнюю оболочку script (или, альтернативно, внешний PHP скрипт) из самого PHP и получить свой идентификатор процесса в пределах того же script?
Вызвать внешнюю оболочку script из PHP и получить ее идентификатор процесса
Ответ 1
$command = 'yourcommand' . ' > /dev/null 2>&1 & echo $!; ';
$pid = exec($command, $output);
var_dump($pid);
Ответ 2
Если вы хотите сделать это строго с помощью инструментов, которые PHP дает вам, а не Unix-specific 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;