我有一个太重的计划任务,所以我的问题是,一个太重的计划任务可能会使冷融合服务器掉线?我的意思是有时我的计划任务超过了循环限制时间,无论如何我正在寻找其他方法来制作同样的东西,但不会太重。
2 回答
好吧,计划任务实际上只是对正常 CF 页面请求的自动调用。这意味着,如果您在浏览器窗口中手动调出计划任务 URL,它是否也会超时?
请记住,服务器正在调用和运行计划任务,这意味着您可以拥有与实际用户不同的会话、CGI、请求和表单范围值。但是,您可以使用CFSETTING 标记的 requestTimeout 属性来延长页面在超时之前完成任务的时间。requestTimeout 属性采用一个表示秒数的值,在该秒数之后,如果没有来自服务器的请求,CF 认为该页面没有响应。
但是,这在很大程度上取决于您的计划任务实际在做什么。您可以通过多种方式将代码分解为组成部分,以便更快地处理。也许弄清楚循环正在做什么(并且它真的需要做它正在做的所有事情)是一个很好的起点。
有几件事需要考虑。
首先,您的任务需要一段时间才能运行,并且当前超时。这里有一些事情需要调查:
- 不是调查,但您可以根据@coldfusiondevshop 的建议
requesttimeout
为该请求设置。<cfsetting>
- 您可以审核您的代码,看看它是否可以进行不同的编码以不花费很长时间来运行。由于通常作为任务完成的工作的性质,这可能是不可能的。
- 根据您的 ColdFusion 版本(请始终使用 CF 版本标记您的问题,以及仅使用“ColdFusion”),您可以利用增强的调度 CF10 将任务分成更小的块并将它们链接在一起,从而使部分总和不太可能超时。这也不总是可能的,但这是一个考虑因素。
要考虑的另一件事是是否值得为您的任务运行一个单独的 CF 实例。除了您的任务超时之外,它还可能会减慢其他所有人的处理速度,而它正在运行。你检查过吗?对于单个任务,这可能是矫枉过正,但请记住,任务不需要由与站点其余部分相同的 CF 实例运行,并且确实有一个令人信服的案例不这样做如果有很多任务会占用 CF 实例的资源。
总而言之:通过 增加你的超时时间<cfsetting>
,然后审核你的代码,看看你是否可以提高它的性能。我说的其他事情只是“加分”建议。