2017-03-25 2 views
1

私はCanu assemblerプログラムを実行するためにPHP exec()関数を使用しています。同じスクリプト内でそのプロセスIDを取得したいと思います。exec()がプロセス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の出力を得ました。

これを解決する方法を教えてください。どうもありがとう。

+0

'ps aux | grep "プロセス名" '* pid *、' exec() 'の出力を解析します。他のPHPシェルの相対関数は、成功したかどうか、おそらく出力だけを返します。 – Xorifelse

答えて

1

この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]); 
関連する問題