如何让 Symfony 启动进程 PID?
How to get process PID started by Symfony?
如何获取 Symfony 启动的进程的 PID?
代码如下
$process = new \Symfony\Component\Process\Process('vlc');
$process->start();
return $process->getPid();
returns PID 1488。但系统中没有具有相同 PID 的进程(没有 vlc,没有 php)。
编辑
提供的代码在 app/console (Symfony\Component\Console\Command\Command)
中运行
进程分叉
进程单独产生 UI 并让启动进程正常结束的可能性不大,即
----> vlc (1488) ---> EOL
|
+--> vlc-ui (??) ---> Application
此行为可以通过 运行 应用程序从命令行观察到,并几乎立即检查提示是否 returns。
挂断信号
另请注意,当父进程退出(您的脚本)时,子进程也可以通过监听 SIGHUP 信号来选择退出。如果您还没有这样做,您可以在调查时通过添加 sleep()
语句来让您的脚本“存活”更长时间。
另一种在某些情况下可能有效的方法是像脚本一样反向执行它以 grep 解析包含所需进程的 'ps -A'(例如 PHP)并从结果中提取 PID。您无法控制结果集上的 "who's who" 但实际上可以控制 "who's" 运行.
如何获取 Symfony 启动的进程的 PID? 代码如下
$process = new \Symfony\Component\Process\Process('vlc');
$process->start();
return $process->getPid();
returns PID 1488。但系统中没有具有相同 PID 的进程(没有 vlc,没有 php)。
编辑
提供的代码在 app/console (Symfony\Component\Console\Command\Command)
中运行进程分叉
进程单独产生 UI 并让启动进程正常结束的可能性不大,即
----> vlc (1488) ---> EOL
|
+--> vlc-ui (??) ---> Application
此行为可以通过 运行 应用程序从命令行观察到,并几乎立即检查提示是否 returns。
挂断信号
另请注意,当父进程退出(您的脚本)时,子进程也可以通过监听 SIGHUP 信号来选择退出。如果您还没有这样做,您可以在调查时通过添加 sleep()
语句来让您的脚本“存活”更长时间。
另一种在某些情况下可能有效的方法是像脚本一样反向执行它以 grep 解析包含所需进程的 'ps -A'(例如 PHP)并从结果中提取 PID。您无法控制结果集上的 "who's who" 但实际上可以控制 "who's" 运行.