有没有办法不等待shell_exec完成?

时间:2015-06-03 15:31:34

标签: php shell-exec

我使用shell_exec()来运行perl程序,通过要求用户输入一些值来完成任务需要一个多小时。我想将shell_exec()作为后台程序运行,并将摘要页面刷新回索引页面。我找到了一些建议,使用' 2> / dev / null&'但是,在shell_exec()的末尾,它在运行我的index.php时不起作用,它在等待符号的同一页面上停留。

如果有任何其他技巧来处理这种情况也会很棒。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

你需要重新分配stdout以及stderr。

command >/dev/null 2>&1 &

>用于将所有标准输出发送到/ dev / null。 2>正在发送所有错误。 &1表示将其发送到与标准输出相同的位置。

这也可以用于日志文件

command >>command.log 2>>&1 &

>>会追加而不是覆盖。

答案 1 :(得分:0)

最后,我设法使用cgi而不是PHP来使system()相应地工作到欲望输出,这非常简单。我认为类似的解决方案可以在PHP中找到:

# fork this process
 my $pid = fork();
 die "Fork failed: $!" if !defined $pid;
 if ($pid == 0) {
# do this in the child
 open STDIN, "</dev/null";
 open STDOUT, ">/dev/null";
 open STDERR, ">/dev/null";
 system("perl script.pl > output.log");
 }

希望这会有用!

相关问题