为什么这个进程不在后台运行?
所以基本上我想运行将生成大约 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
,作为响应,我只得到没有信息的标头 - 巫婆意味着过程是没有运行...
我该如何做到这一点才能正常工作?
So basically i want to run script that will make around 15k pdf files, and it needs to be done from shell because of php max_timeout...
Server: Ubuntu 10.04.1
PHP : 5.3.2-1ubuntu4.5
So what i currently tried:
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');
And after that i go to ssh console and do ps $ps
and in response i get headers only with no info - witch means process is not running...
How can i do this so it works?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试不使用
echo $!
或以&
结尾。如果您想“内联”运行 2 个进程,请使用&&
而不是简单的&
。示例:
nohup php5 $Command > /dev/null 2> /dev/null &&回声$! &
要检查进程是否因错误而结束,请执行以下操作:
nohup php5 $Command > command_stout.txt 2> command_stderr.txt &&回声$! &
Try without
echo $!
or ending with&
. If you want to run 2 proccess 'inline', use&&
instead of a simple&
.Example:
nohup php5 $Command > /dev/null 2> /dev/null && echo $! &
To check if the proccess end with error do this:
nohup php5 $Command > command_stout.txt 2> command_stderr.txt && echo $! &
尝试将 &命令后:
Try to put a & after Command :