Как я могу получить PID процесса, запущенного Symfony?
Код ниже
$process = new \Symfony\Component\Process\Process('vlc');
$process->start();
return $process->getPid();
возвращает PID 1488. Но в системе нет процесса (без vlc, без php) с таким же PID.
Представленный код запускается в приложении / консоли (Symfony \ Component \ Console \ Command \ Command)
Весьма вероятно, что процессы порождают свой пользовательский интерфейс отдельно и позволяют начальному процессу завершиться нормально, т.е.
----> vlc (1488) ---> EOL
|
+--> vlc-ui (??) ---> Application
Такое поведение можно наблюдать, запустив приложение из командной строки и проверив, возвращается ли приглашение почти немедленно.
Также обратите внимание, что когда выходит родительский процесс (ваш сценарий), дочерний процесс может также выбрать выход, прослушивая сигналы SIGHUP. Если вы этого еще не сделали, вы можете позволить вашему сценарию «жить» дольше, добавив sleep()
Заявление пока вы расследуете.
Другой подход, который может работать в некоторых ситуациях, заключается в обратном выполнении сценариев, например, для анализа синтаксического анализа ps -A, содержащего требуемый процесс (например, PHP), и извлечения PID из результата. У вас нет контроля над «кто есть кто» в наборе результатов, но вы не можете контролировать, кто на самом деле работает.