【发布时间】:2012-05-09 00:58:14
【问题描述】:
首先,我在 CF Admin 中将 Timeout Requests after (seconds) 设置为 20。
然后我运行一个 cfm,其中包含 while(true); 之类的行
页面将运行超过 20 秒,并且在我写这篇文章时线程仍然存在。
以下是使用 Server Monitor 拍摄的快照
Thread jrpp-3 request type - TEMPLATE REQUEST
*Template Path - D:\Projects\infiniteLoop.cfm
*Request Parameters - {}
*Request Method - GET
*Client IP address - 127.0.0.1
*Thread elapsed time - 322659 milliseconds
这正常吗??这是CF9.0.1.,开发者版。 多实例设置,使用 JRun。
停止无限循环的唯一方法是重启 CF。
【问题讨论】:
-
Henry... 你在无限循环中做什么。 有一些东西会抢占全局超时(数据库调用、ftp、需要外部资源的东西)。
-
伙计们......这个问题没有提到CFTHREAD......不确定它来自哪里。
-
@MarkAKruger 我正在实施一些新的东西。代码仍然不稳定。我是用 CFScript 编写的,没想到最终被无限执行的代码不会被 CF 的请求超时杀死。
-
嗯,我认为巴尼的回答可能是确定的。我正在询问一些 Adobe 人员,但共识似乎是肯定的 - cfscript 内部的循环不会响应全局超时值。如果你用标签格式重写你的循环,我猜你会得到你期望的超时。请记住,尽管本机调用(文件 I/O、DB 等)仍会受到此问题的影响。
-
刚刚想到这个问题,CF共享托管会不会很麻烦?