2010-11-01 34 views
1

在長服務器進程,服務器可以逐步編寫響應, 像:AJAX - 從長服務器獲取數據調用

複製100個文件完成後,

10秒後:

歸檔文件完成,

30秒後:

完成刪除臨時文件,

和....

是否有可能完成了ajax之前獲取該流,並將其展示給用戶?

回答

0

您可以使用兩個異步回調。一個用於執行保持會話變量值更新(刪除文件數)的處理(刪除文件或其他)。另一個異步回調可以在設置的超時時間內檢查此會話變量的值,然後相應地更新GUI,

0

即使您將超時設置爲足夠高以捕獲全部爲使用將不會得到任何反饋,直到它完成。

與多個狀態輪詢去是唯一的出路。

但取決於您的服務器運行方式,可能會有一些怪癖想到。

例如,IIS每個會話只使用一個線程,因此來自同一客戶端的兩個同時呼叫將相互處理。

如果您發佈了一些需要時間處理的ajax或iframe,如文件上傳,那麼該調用會阻止會話,並且任何狀態頁都需要無會話才能夠直接響應。