2010-08-11 63 views
1

我有一個perl CGI需要將一些信息返回給瀏覽器,然後才進入一個非常漫長的過程,這個過程通常需要幾分鐘的時間。在進程退出之前是否可以從perl CGI進行打印?

當前我打印該消息,但直到整個過程退出時才顯示。

所以,我的問題是:

是否有可能得到消息返回到瀏覽器中游,如果沒有

我怎麼產卵關閉一個單獨的進程來處理冗長位,讓我可以退出最初的過程,從而讓用戶獲得他們需要的反饋。

當漫長的過程完成時,用戶不需要被通知,所以,只要服務器一直處於閒置狀態,我就可以放棄。

+2

有關如何在CGI過程完成後執行後臺計算,請參閱http://stackoverflow.com/questions/3440720/interrupted-server-side-perl-cgi-script-when-client-side-browser - 關閉 - 你需要一個工作隊列。 – Ether 2010-08-11 21:13:27

回答

1
# Tell Perl not to buffer our output 
$| = 1; 
+0

太棒了!謝謝! – 2010-08-11 21:15:53

+6

應該指出,'$ |'是全局的,並且會影響所有文件句柄(不相關的文件IO)。你幾乎總是不會那麼做...'使用IO :: Handle; STDOUT-> autoflush(1)'代替。 – 2010-08-11 21:20:19

+1

@Evan「'$ |'如果設置爲非零值,則在當前選定的輸出通道上每寫一次或打印後立即強制刷新。」我一直認爲這意味着'STDOUT'是唯一一個會受到影響的句柄,如果我不先選擇其他句柄。 – 2010-08-11 22:26:59

相關問題