exec()不返回进程ID

时间:2017-03-25 03:45:02

标签: php exec bioinformatics pid dna-sequence

我正在使用PHP exec()函数来执行Canu assembler程序,我希望在同一个脚本中获取其进程ID。

问题是exec()没有返回任何PID,即使进程成功运行。

这些流程就像这样开始:

$gnuplot_path = '/usr/bin/gnuplot';

$command = 'nohup canu -d . -p E.coli gnuplot='.$gnuplot_path.' genomeSize=4.8m useGrid=false maxThreads=30 -pacbio-raw /path/to/p6.25x.fastq > /path/to/process.err 2>&1 &';

目前,我尝试通过以下方式确定流程是否仍在运行:

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

还有这个:

exec($command, $pid, $return_var);
print_r($pid);
echo "$return_var\n";

但是,我分别获得了string(0) ""Array ( ) 0的输出。

请让我知道如何解决这个问题。非常感谢。

1 个答案:

答案 0 :(得分:1)

这个很棘手。我会做什么:

$gnuplot_path = '/usr/bin/gnuplot';
$command = 'nohup canu -d . -p E.coli gnuplot='.$gnuplot_path.' genomeSize=4.8m useGrid=false maxThreads=30 -pacbio-raw /path/to/p6.25x.fastq > /path/to/process.err 2>&1';
$command .= ' & echo $!';

$pid = exec($command, $output, $a);
var_dump($output[0]);