2014-09-03 38 views
0

在Application.cfc中,當應用程序超時或服務器關閉時,調用OnApplicationEnd。但是,我可以確切地知道哪一個是原因?我只想在服務器關閉時運行一些清理代碼,而不是在應用程序超時時運行。我真的可以這樣做嗎?在ColdFusion 10中,如何判斷OnApplicationEnd是由應用程序超時還是服務器關閉引起的?

+1

也許,在請求結束時存儲最後一個請求的時間並將其與應用程序結束的當前時間進行比較?如果超時,則所用時間將接近應用程序超時。可能不是完美的,但是比看堆棧跟蹤 – 2014-09-03 16:01:30

回答

9

堆棧跟蹤在兩種情況下可能都不相同。設置一個測試來捕獲錯誤並在每個實例中記錄堆棧跟蹤。然後,當調用onApplicationEnd來確定原因時,您將知道要查找什麼。 (您需要每次都捕獲一個錯誤並搜索堆棧)。

當然,這是一個很大的免責聲明,你依賴的是未記錄的行爲,可以隨ColdFusion的任何更新等等而改變。老實說,封裝邏輯以至於不關心爲什麼應用程序正在關閉。

+2

+1更有前途的證據,「封裝邏輯更好,因此它不關心應用程序關閉的原因。」 – 2014-09-03 16:28:54

+0

非常感謝您的回覆!在給出一些想法後,我相信我想出了一個不依賴於onApplicationEnd的解決方案。 – 2014-09-04 20:21:06

相關問題