所以基本上我想运行将生成大约 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
作为响应,我只得到没有信息的 header - 这意味着进程没有运行......
我怎样才能做到这一点?
最佳答案
尝试不使用 echo $!
或以 &
结尾。如果您想“内联”运行 2 个进程,请使用 &&
而不是简单的 &
。
示例:nohup php5 $Command >/dev/null 2>/dev/null && echo $! &
要检查进程是否以错误结束,请执行以下操作:
nohup php5 $Command > command_stout.txt 2> command_stderr.txt && echo $! &
关于php - 为什么这个进程不在后台运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5911989/