代码之家  ›  专栏  ›  技术社区  ›  Phil

ColdFusion/IIS/重定向限制?

  •  3
  • Phil  · 技术社区  · 6 年前

    我有一个ColdFusion脚本,它执行一个任务,然后使用 <cflocation> 标记,传入下一个要处理的ID。脚本在整整51行之后停止工作。我认为这是代码中的一个bug,所以我将要处理的ID更新为52,它从ID52运行到102并停止。又是51行。

    有人知道冷聚变在 cflocation 标签?或者这可能是IIS正在做的事情?

    当我使用javascript时 window.location 方法,它可以正常工作,并且在结束前不会停止-如预期的那样。

    更新-解释

    在处理每个ID之后,脚本重定向到自身的原因是,在请求完成之前,ColdFusion不会将变量/内存释放回JVM。因此,对于执行数百个复杂任务的请求,内存使用率将继续增长,直到请求正式完成。这会导致JVM内存不足。据我所知,纠正这一问题的最佳方法是将项目分割成单独的请求,这样ColdFusion将把请求变量/内存释放回JVM。因此,为什么我们要处理1个项目,然后在下一个ID中重定向到自传递来处理。这是为了保持ColdFusion将请求视为唯一的,并降低内存消耗。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Alex Baban    6 年前

    curl


    <cfparam name="url.id" default="0" />
    <cfset url.id = url.id + 1 />
    
    
    <!--- // your task code --->
    
    <cffile 
        action = "append"
        file = "C:\inetpub\wwwroot\foo\redir-log.txt" 
        output = '#url.id#'>
    
    <!--- // your task code --->
    
    
    <!--- // condition to end the loop --->
    <cfif (url.id lt 300)>
    
        <cfset args = [
            'http://127.0.0.1:53227/redir.cfm?id=#url.id#'
        ] />
    
        <cfexecute 
            name="curl" 
            arguments="#args#" 
            variable="output" 
            errorVariable="error" 
            timeout="0" 
        />
    
        <cfdump var="#output#" />
        <hr />
    
        <cfdump var="#error#" />
        <hr />
    
    </cfif>
    

        2
  •  1
  •   rrk Manish Jangir    6 年前

    1. window.location
    2. <meta http-equiv="refresh" content="0;url=http://example.com">