【发布时间】:2012-04-01 19:35:58
【问题描述】:
Perl 脚本需要接收 ajax 请求,将“成功”消息发送回浏览器,然后“生成”一个进程在后台运行。 (这个生成的进程可能需要 10 分钟才能运行,所以我不希望浏览器等待 - 或者发生 apache 超时)
我的印象是 Perl 的 exec() 函数可以做到这一点。比使用 fork() 或 system() 更好,因为它们应该等待响应。
但是,在将成功消息发送到浏览器之前,脚本似乎正在等待 exec() 程序完成。这是我的 Perl 脚本的最后部分:
print "Content-type: text/html\n\n";
print "success"; # this gets returned via ajax
exec $script_filename, $var1, $var2, $var3;
一切正常,但浏览器在 $script_filename 完成运行之前没有收到“成功”消息。
我想做的似乎类似于this previous post,但那里没有足够的细节。
有什么想法吗?谢谢。
【问题讨论】:
-
fork() 不会“等待响应”。