- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
背景:
这是计划作业的一部分,该作业从外部站点检索数据(外部站点提供用于通过 Web 服务检索数据的 API)并使用新信息更新数据库。它正在检索大约 3,500 个数据项。我当前的计划作业会创建一次运行 10 个线程的 CFThread
任务 block ,并在开始下一个 10 个线程 block 之前将它们连接起来。
代码:
<cfset local.nMaxThreadCount = 10>
<!---retrieve a query that contains the items that need to be updated, approximately 3,500 items--->
<cfset local.qryItemsNeedingUpdate = getItemsNeedingUpdate(dtMostRecentItemPriceDate = local.qryMostRecentItemPriceDate.dtMostRecentItemPrice[1])>
<cfset local.nThreadBlocks = Ceiling(local.qryItemsNeedingUpdate.RecordCount / local.nMaxThreadCount)>
<cftry>
<cfloop index="local.nThreadBlock" from="1" to="#local.nThreadBlocks#">
<cfif local.nThreadBlock EQ local.nThreadBlocks>
<cfset local.nThreadCount = local.qryItemsNeedingUpdate.RecordCount MOD local.nMaxThreadCount>
<cfelse>
<cfset local.nThreadCount = local.nMaxThreadCount>
</cfif>
<cfset local.lstThreads = "">
<cfloop index="local.nThread" from="1" to="#local.nThreadCount#">
<cfset local.nQryIdx = ((local.nThreadBlock - 1) * local.nMaxThreadCount) + local.nThread>
<cfset local.vcThreadName = "updateThread#local.qryItemsNeedingUpdate.nItemID[local.nQryIdx]#">
<cfset local.lstThreads = ListAppend(local.lstThreads, local.vcThreadName)>
<!---create the attributes struct to pass to a thread--->
<cfset local.stThread = StructNew()>
<cfset local.stThread.action = "run">
<cfset local.stThread.name = local.vcThreadName>
<cfset local.stThread.nItemID = local.qryItemsNeedingUpdate.nItemID[local.nQryIdx]>
<!---spawn thread--->
<cfthread attributecollection="#local.stThread#">
<cfset updateItemPrices(nItemID = attributes.nItemID)>
</cfthread>
</cfloop>
<!---join threads--->
<cfthread action="join" name="#local.lstThreads#" />
</cfloop>
<cfcatch type="any">
<cflog text="detailed error message logged here..." type="Error" file="myDailyJob" application="yes">
</cfcatch>
</cftry>
问题:
后台进程需要这种逻辑吗?也就是说,是否需要CFThread action="join"
?线程中不显示任何内容,并且线程是独立的(不依赖于其他线程或生成它们的进程)。线程更新数据库中的价格并终止。是否有必要限制线程,即一次运行 10 个线程并将它们连接起来?该进程可以循环并一次创建所有 3,500 个线程吗? ColdFusion 会将额外的线程排队并在有时间时运行它们吗?
最佳答案
除非您需要在线程完成后向页面输出信息,否则“join”不是必需的。
线程将排队;这因您运行的 ColdFusion 版本而异。
但是,对于您正在做的事情,线程并不是您想要的。您想要使用消息队列,例如 ActiveMQ 或 Amazon SQS。您可以使用 Adobe CF 附带的 ActiveMQ 网关等事件网关,或者如果您使用不同的消息队列或 CF 引擎,则可以编写自己的事件网关。 (例如,我编写了一个使用 Amazon SQS 和 Railo 事件网关的消息系统,用 CFML 编写)
关于multithreading - 后台进程是否需要CFThread join?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14326161/
我有一个调用 cfcomponent 对象的循环。
使用 Railo,我正在使用 cfthread 处理大型视频文件。文件上传后,我调用 使用 ffmpeg 处理文件(type="task"是 Railo 特定的)。对于大文件,这可能需要一段时间,看起
我有一个交易虚拟物品的应用程序,并且有一个页面可以获取我的所有帐户,并且为每个帐户创建一个线程,该线程首先登录该帐户,然后在 session 处于 Activity 状态时搜索并购买物品。在这一点上,
现在我将它用于 csv 文件的后端处理,并且 cf8 标准仅限于十个线程,我想确保我不会以某种方式使服务器过载...... 有什么建议? 我正在制作唯一命名的线程,但我担心性能...如果我需要停止线程
我们有几千个目录,其中的页面每天访问量高达 50 万次。在每个页面点击结束时,我们将一些 CGI 变量插入到数据库中。如果提交了表单或执行了搜索,我们会将其中的一些信息插入到另一个数据库中。不需要从这
我正在尝试改进我的一份报告的执行时间,该报告使用 cfcharts 打印图表。代码本身是一个实体循环,我为每个实体创建了一个图表(这是一个比较报告)。 由于报告的复杂性,通过内联执行此操作需要将近一分
我在 ColdFusion 应用程序中使用 CFTHREAD。根据我从 Ben Nadel ( https://www.bennadel.com/blog/2980-terminating-async
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我以前没有使用过 cfthread,但我使用以下代码,但它不起作用。
我以前没有使用过 cfthread,但我使用以下代码,但它不起作用。
感谢回复!!但我仍然无法做到。我得到的错误是 “元素 objGet1 在类型为 Coldfusion.runtime.VariableScope 的 Java 对象中未定义。” 下面是我的完整代码。我
我是一名优秀的程序员,十分优秀!