在Linux下运行php5后台进程

时间:2012-12-13 09:56:59

标签: php process

此主题有几个条目,例如hereenter,但这些建议似乎都没有效果。我在这里有一个例子:

$pid = shell_exec("nohup sleep 10 2> /dev/null & echo $!");
echo $pid;

我希望在后台启动一个新命令sleep 10,然后立即返回shell。但是找到的行为是这段代码'等待'执行子命令sleep 10

如何在后台运行我的commad作为新流程?

1 个答案:

答案 0 :(得分:0)

根据nohup on the wikipedia page的一些注释,除非所有流再次免费,否则有些炮弹会拒绝关闭。

因此,解决方法是重定向所有三个标准流:输出,错误和输入,如下例所示:

nohup ./myprogram > foo.out 2> foo.err < /dev/null &

这只是猜测,但在你的情景中可能就是这种情况。

$pid = shell_exec("nohup sleep 10 > /dev/null 2> /dev/null < /dev/null & echo $!");
echo $pid;

您可能想尝试一下。我希望这有用,即使它没有回答你的问题。