기본적으로 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 호출이 완전히 새로운 컨텍스트 내에서 실행되도록 스레드 된 경우 수행 할 작업이 있다고 가정하고 관리자의 요청 시간 제한 값만 볼 수 있습니다. 그러나 나는 단지 짐작하고있다.
누군가 나를 도와 줄 수 있습니까? 나는 관리자로부터 타임 아웃 값을 제거 할 수 있었지만, 그렇게 할 것을 요구하는 것을 정말로 싫어했다.
그것은 당신이와 cfhttp와 함께 얻으려고 노력하는 페이지가 한 시간 초과입니다 가능성이 있습니다. 그러나 나는 짐작하고있다. –
@Dan, 내가 호출하는 파일은 코드가있는 'GetResults.cfm'페이지입니다. . 이 파일은 요청 시간 초과 값을 해당 파일에 설정했기 때문에 시간 초과되지 않습니다. 기이 한 일은 위의 코드에서 'cfthread'태그를 제거하고 페이지를 모두 호출하면 예상대로 시간 초과없이 실행된다는 것입니다. –
user2592724