2012-09-26 29 views
0

我正在運行Coldfusion8並有一個cfc,它循環訪問一組數據庫記錄。如何避免在Coldfusion中上傳和調整大量圖像時請求超時?

每個記錄包含兩個字段image pathimage file。我正在爲每個圖像構建一個路徑,將其上傳到臨時文件夾,調整大小然後將其存儲到S3

根據記錄的數量,這可能需要相當長的一段時間,我一直沒能成功完成上傳週期,更大的圖像集(最終超時)。

我已經設置我的超時閾值5000,但它仍然顯得不夠。

我可以拿起我離開的地方,因爲我讓媒體日誌來對證,上傳到S3之前。這樣我就可以完成任務,但是我需要觸發這個函數5x來上傳400個項目。

問:
有沒有辦法避免超時沒有(在S3的情況下)設置httptimeout一些50000000?如果用戶在系統仍在上傳時離開導入頁面,這是否會在CFTHREAD中運行?

感謝您的一些見解。

回答

3

可以使用CFthread來執行任務,但要確保你鎖定的範圍!否則,您可能會多次運行這個內存密集型進程並終止服務器,如果密集程度過高,您只希望此進程一次運行一次。

您還有其他選擇,但如果這不是您的應用程序用戶需要運行的事情,並且您的操作一次性完成,您可以使用超長超時設置計劃任務,以便在夜間運行服務器的使用率並不是很高,這使您可以獨立地爲應用程序設置超時時間,以便應用程序的其餘部分不受全局超時更改的影響。

另一種選擇是,如果這是用戶將半定期做的事情,那麼通過電子郵件,日誌或其他方式(Ajax或Websockets)推送通知讓用戶知道他們是任務的線程已完成。這有一個好處,即超時時間可以根據線程生成時要動態處理的數據量來計算。但是,如果您不小心,可以使用多線程處理大型數據集(加上日誌文件讀寫鎖定將更難管理),從而使服務器超載。

我會鼓勵你,雖然,藉此路程,看看你的解決方案的工作,並發表您的最終解決方案,以便其他人可以看到的結果是什麼。

希望這會有所幫助。

+0

感謝您的所有信息。所以我可以暫時將超時設置爲......大量,同時找出更平滑的方式? – frequent

+0

你可以,但首先檢查你的日誌,如果你有其他模板超時,那麼他們也應該看看,以確保你在工作時不會有太多'懸掛'的頁面浮動。我建議您查看cflock的文檔和cfthread,並在那裏開始您的研究。 – Dpolehonski

+0

好的。非常感謝。現在,我沒事(截止日期......)。這是我使用'forever-timeout'的唯一地方。其他一切都是正常的。 – frequent

相關問題