Php在后台执行一系列外部niced linux命令

时间:2013-07-15 20:31:47

标签: php linux exec background-process nice

在我的php脚本中,我生成一系列要执行的控制台命令。序列是严格的,因为每个next命令都依赖于前一个命令的结果。我用 ';'命令之间的分隔符。

在正常情况下我只是exec()那个序列,它工作正常。但有时候我需要将这个序列定位并在后台运行。我读到可以通过附加'>在后台运行一个命令/ dev / null&'它。但是通过一个序列,我尝试了不同的方法但无济于事。我觉得exec()可能不适合这项工作。

如何做到这一点?据我所知,我需要在每个命令前加上'nice -n 10'。

UPDATE1:

我目前正在使用的代码:

$cmd[] = '...';
//...
$cmd[] = '...';
//...

if($inBackground)
{
    foreach($cmd as &$command)
        $command = 'nice -n 10 '.$command.' > /dev/null ';
}

if($inBackground)
    exec(implode(' ; ', $cmd).' &');
else
    exec(implode(' ; ', $cmd));

UPDATE2:

我使用马里奥的提示更改了代码,现在它可以正常工作:

$cmd[] = '...';
//...
$cmd[] = '...';
//..

$command = implode(' ; ', $cmd);
if($inBackground)
    $command = "nice sh -c '".$command."' > /dev/null &";

exec($command);

我确保我的命令已正确转义且不包含单引号。

0 个答案:

没有答案