从 PHP 调用外部 shell 脚本并获取其进程 ID

2022-08-30 15:04:21

如何从 PHP 本身调用外部 shell 脚本(或者调用外部 PHP 脚本)并在同一脚本中获取其进程 ID?


答案 1
$command =  'yourcommand' . ' > /dev/null 2>&1 & echo $!; ';

$pid = exec($command, $output);

var_dump($pid);

答案 2

如果你想严格使用PHP给你的工具来做到这一点,而不是特定于Unix的巫术,你可以用proc_openproc_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;

推荐