感谢这里的其他一些很棒的帖子(如this和that),我有几个可靠的方法来在Perl脚本中背景进程。如何在IIS下完成Perl Perl CGI的后台进程背景信息
然而,在我的环境(IIS6 Windows Server 2003上),它似乎并不完全背景。把这个脚本:
use CGI::Pretty qw(:standard);
print header;
print start_html;
print "hi<br>";
system(1,qw(sleep 10));
print "bye";
print end_html;
浏览器将保持,而睡眠过程中运行,持续10秒“连接”。 “嗨”和“再见”都将被打印在屏幕上,但浏览器似乎在等待更多来自服务器的东西(Firefox 4和IE6的进度条在这10秒内保持缓慢移动)。
我想用户(我的真正的应用程序),相信这个过程是完全恢复接地和完全舒适的能够关闭的网页。随着进度条的移动,我相信他们会坐下来等待它停下来,然后再关闭它或走开。
只要是明确的 - 过程中出现中背景。我可以关闭网页浏览器。真正的bacgrouind作业继续运行(有时长达一个小时),没有问题。我只想从UI的角度来清理它。
谢谢!
感谢您的建议。关于选项:1)对于这个特定的小UI“nit”的解决方案太复杂; 2)绝对考虑它,但我们有足够的计划任务运行在这台服务器上,我讨厌添加另一个只是投票工作要完成; 3)这非常有趣,几乎就像一个单向的Web服务 - 谢谢! – jimtut 2011-04-04 17:59:20
服务实际上是您在Windows上可以背景的唯一方式,因为它的流程模型不允许将流程从父级分离并独立运行。但是我们发现使用Windows资源工具包工具instsrv.exe和srvany.exe更容易,这使得将Perl脚本设置为Windows服务相当容易。我们使用这种方法解决了这个问题,并使用类似REST的API对HTTP :: Daemon脚本进行守护进程管理。 – 2011-06-03 21:10:53
@morungos:我的选择3也可以工作,尽管我毫不犹豫地承认它是一种混合物。这项工作并不是真正的背景,但从正在看它的网络浏览器的角度来看,它是。 – btilly 2011-06-03 22:49:59