为什么这个过程没有在后台运行?

时间:2011-05-06 13:16:25

标签: php linux ubuntu

所以基本上我想运行大约15k pdf文件的脚本,并且需要从shell完成,因为php max_timeout ......

服务器:Ubuntu 10.04.1 PHP:5.3.2-1ubuntu4.5

所以我目前的尝试:

function run_in_background($Command){
    $ps = shell_exec("nohup php5 $Command > /dev/null 2> /dev/null & echo $!");
    return $ps;
}

$ok = run_in_background('/var/www/custom/web/public/make_pdf.php');

if(!empty($ok))
    var_dump($ok);
else
    exit('Fail');

然后我去ssh控制台并做ps $ps并作为回应我只收到没有信息的标题 - 女巫意味着进程没有运行......

我怎么能这样做呢?

2 个答案:

答案 0 :(得分:1)

尝试放一个&命令后:

$ps = shell_exec("nohup php5 $Command & > /dev/null 2> /dev/null & echo $!");

答案 1 :(得分:1)

尝试不使用echo $!或以&结尾。如果您想运行2个进程'内联',请使用&&而不是简单的&

示例:nohup php5 $Command > /dev/null 2> /dev/null && echo $! &

检查过程是否以错误结束:

nohup php5 $Command > command_stout.txt 2> command_stderr.txt && echo $! &