基本上,我有一個從cfthread標籤內執行CFHTTP呼叫的作業調度引擎。這樣可以同時運行多個作業。基本上我希望能夠做的是延長超出管理員的默認值是在我的一些cfhttp調用,以便我可以讓他們完成並從我打電話的頁面獲得結果。但這並沒有發生。CFTHREAD CFHTTP超時
我的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'頁面,其代碼爲: 。這個頁面不會超時,因爲我在該文件中設置了requesttimeout值。奇怪的是,如果我在上面的代碼中刪除'cfthread'標籤並調用頁面,則所有內容都按預期運行,並且沒有超時。 –
user2592724