coldfusion (railo) и cfthread не работают, как я ожидал
Я не использовал cfthread раньше, но я использую следующий код, и он не работает.
<cfloop from="1" to="5" index="local.pageNo">
<cfthread name="thr#local.pageNo#" threadIndex="#local.pageNo#" action="run">
<cfif local.pageNo GT 1>
<cfhttp url="#local.apiURL#&page=#local.pageNo#" method="get" result="local.myResults" >
</cfhttp>
<cfset local.myResponse = deserializejson(local.myResults.filecontent)>
</cfif>
<cfloop from="1" to="#arrayLen(local.myResponse.result)#" index="i">
<cfset local.apartmentList = listAppend(local.apartmentList,local.myResponse.result[i].id & '-0')>
</cfloop>
</cfthread>
</cfloop>
<cfthread action="join" name="thr1,thr2,thr3,thr4,thr5"/>
Я ожидаю, что local.apartmentList будет большим списком идентификаторов, но он вернется пустым. Это почти как если бы код внутри потока просто пропускался. Кто-нибудь может определить, что я делаю не так?
1 ответ
Когда вы используете <cfthread>
код в этих тегах не запускается в том же контексте, что и код вокруг него. Поэтому вам нужно передать в него любые переменные, которые вы собираетесь использовать (в качестве атрибутов <cfthread>
тег) или "поделиться" ими через область запроса.
Так что ваши <cfthread>
блок не будет знать, какие переменные, как local.pageNo
являются.
Любая ошибка, возникающая в <cfthread>
обработка регистрируется, поэтому вам нужно просмотреть журналы, чтобы увидеть, какие ошибки возникают.