Подтвердить что ты не робот

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

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

4b9b3361

Ответ 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;