2013-07-18 2 views
1

기본적으로 cfthread 태그 내에서 cfhttp 호출을 실행하는 작업 스케줄링 엔진이 있습니다. 이것은 다중 작업이 동시에 실행될 수 있기 때문입니다. 기본적으로 내가 할 수 있기를 원하는 것은 관리자의 기본값이 cfhttp 호출 중 일부를 초과하는 시간 초과 기간을 연장하여 내가 끝내고 페이지에서 결과를 얻을 수있게하는 것입니다. 그러나 그것은 일어나지 않습니다.CFTHREAD CFHTTP timeout

내 CF 관리 요청 시간 초과 설정은 30 초입니다. 두 파일이 있습니다. 첫 번째는 'MyThreadedCFHTTP.cfm'라고 :라고

<cfthread action="run" name="job_#CreateUUID()#"> 
    <cfsetting requesttimeout="400" > 
    <cflog text="Web Service Request: Starting" file="JobSchedulerTest" > 

    <!--- Lets do our cfhttp call ---> 
    <cfset var httpResults = ""/> 
    <cfhttp method="get" url="http://localhost:8500/sessiontesting/CFHTTPRequestTimeOut/GetResults.cfm?RequestTime=400" result="httpResults" timeout="400"> 

    <cflog text="Web Service Result: #httpResults.FileContent#" file="JobSchedulerTest" >  
</cfthread>**strong text** 

내 CFM 파일 'GetResults.cfm'입니다. 무엇이든하기 전에 59 초 동안 잠들뿐입니다.

<cfsetting requesttimeout="400"/> 
<cfset sleep(59000)/> 

예상대로 작동하지 않습니다. cfhttp 호출에는 400 초의 시간 초과가 있지만 cfsetting/requesttimeout 값이 있기 바로 전에 30 초 후에 연결 시간 초과 메시지와 함께 중단됩니다. 이것이 서버의 기본 설정입니다. 흥미로운 점은 태그를 제거하면 통화가 성공적으로 완료된다는 것입니다.

cfhttp 호출이 완전히 새로운 컨텍스트 내에서 실행되도록 스레드 된 경우 수행 할 작업이 있다고 가정하고 관리자의 요청 시간 제한 값만 볼 수 있습니다. 그러나 나는 단지 짐작하고있다.

누군가 나를 도와 줄 수 있습니까? 나는 관리자로부터 타임 아웃 값을 제거 할 수 있었지만, 그렇게 할 것을 요구하는 것을 정말로 싫어했다.

+0

그것은 당신이와 cfhttp와 함께 얻으려고 노력하는 페이지가 한 시간 초과입니다 가능성이 있습니다. 그러나 나는 짐작하고있다. –

+0

@Dan, 내가 호출하는 파일은 코드가있는 'GetResults.cfm'페이지입니다. . 이 파일은 요청 시간 초과 값을 해당 파일에 설정했기 때문에 시간 초과되지 않습니다. 기이 한 일은 위의 코드에서 'cfthread'태그를 제거하고 페이지를 모두 호출하면 예상대로 시간 초과없이 실행된다는 것입니다. – user2592724

답변

0

개인적인 경험이 없지만 검색 후 <cfsetting requesttimeout=""> 코드가 <cfthread> 태그에서 허용되지 않는 것으로 보입니다. 내가 찾은 다음 참조를 참조하십시오.

ColdFusion 관리자가 요청 제한 시간 설정을 사용 불가능하게하는 것과 같은 세부적인 변경을 제안하지는 않습니다. 나는 그것이 좋은 생각이라고 생각하지 않는다. 나는 내가 발견 한이 정보를 그냥 지나가고있다. 요지는 <cfthread> 태그가 <cfsetting requesttimeout=""> 옵션을 지원하지 않는다는 것입니다. 그래서 당신은 아마 당신이 필요로하는 것을 할 다른 방법을 찾거나 설정 타임 아웃 전에 끝내기 위해 코드를 최적화 할 필요가있을 것이다.

  1. CFthread는 기본적으로이 설정되어있는 경우 CF 관리자 패널 타임 아웃을 존중하고, 제한 시간 후 스레드를 죽이는 : 과정에서

    cfthread and request timeout in coldfusion

    은 나는 몇 가지 테스트 후 다음과 장난을 발견 기간.
  2. onRequestStart의 CFsetting 태그 또는 코드의 어느 위치에서든 요청 시간 제한을 준수하지 않습니다.
  3. CFthread 요청 시간 제한에 따르지 않는 특정 태그가 있습니다. CFTTP, CFEXECUTE, CFX 태그 및 CFStoredProc입니다.

    당신이 볼 수 있듯이

    Increase request timeout for a thread in CFML

, 나는 시도하고 라이브 더 이상하지 않습니다 ... 더 주사위를하는 스레드의 상단에 <cfsetting requestTimeout=240 />를 추가하는 시도했습니다.스레드 시간 제한에 관해서는

Am I utilizing <cfthread> correctly for this solution?

- 당신이 페이지의 실행에 복귀하기 위해 만든 스레드를 대기하는 최대 시간을 지정하지만, AFAIK 페이지 요청 (같은 시간 제한을 두는 방법이 없다 timeout)을 생성합니다.

그리고 찰리 Arehart는 ColdFusion에서 요청에 꽤 좋은 기사를 가지고 일반적으로 타임 아웃 - CF911: Lies, Damned Lies, and CF Request Timeouts...What You May Not Realize

+0

@ Miquel-F, 전적으로 들었지만, 이미 그렇게했습니다. cfthread 태그를 시작한 직후에 줄을 보면 requesttimeout을 400으로 설정 한 것을 볼 수 있습니다. cfthread 태그 앞뒤에 을 붙이면 상관 없습니다. 동일한 결과가 cfhttp 시간 초과입니다. 다른 아이디어? – user2592724

+0

@ user2592724 -하지만 그것은 내가 만들고자하는 요점입니다 ... 그리고 다시 이것은 검색만을 기반으로하며, 저는 이것에 대한 개인적인 경험이 없습니다. ''태그는''태그를 무시합니다. ColdFusion 관리자의 설정에 따라 항상 시간 초과됩니다. –

+0

내 응답은 'Your 코드가 cfhttp 호출을 호출하는 호출 템플릿에 있어야하는 첫 번째 게시물에 대한 것입니다. 귀하의 예제에서 MyThreadedCFHTTP.cfm. 호출중인 페이지에 없습니다. ' 업데이트 된 제품은 많은 의미가 있습니다. 왜냐하면 cfthread는 필요한만큼 실행되기 때문입니다. cfhttp 태그는 관리자 설정에 따라 시간 초과됩니다. 첫 번째 링크에서 권장 사항을 따라야 할 수도 있습니다. 이 문제를 조사해 주셔서 감사합니다. – user2592724