2014-09-03 42 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

相关问题