感謝這裏的其他一些很棒的帖子(如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