【发布时间】:2011-05-06 13:16:25
【问题描述】:
所以基本上我想运行将生成大约 15k pdf 文件的脚本,并且由于 php max_timeout 需要从 shell 完成...
服务器: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 作为响应,我只得到没有信息的标题 - 女巫意味着进程没有运行......
我怎样才能做到这一点?
【问题讨论】:
-
尝试不使用
echo $!或以&结尾。如果要运行 2 个进程“内联”,请使用&&而不是简单的&。例如:nohup php5 $Command > /dev/null 2> /dev/null && echo $! & -
在这种情况下 $ok 为空,脚本返回我失败。
-
@arma 你怎么知道进程是否以错误结束?尝试将输出放在文件中。
-
@jotapdiez 我不知道我所知道的它没有返回进程的 PID。好的,你如何输出文件中的所有内容?
-
@arma 只需执行
nohup php5 $Command > command_stout.txt 2> command_stderr.txt && echo $! &并检查两个文件