Coldfusion 我是否在利用<;cfthread>;这个解决方案正确吗?

Coldfusion 我是否在利用<;cfthread>;这个解决方案正确吗?,coldfusion,coldfusion-9,Coldfusion,Coldfusion 9,我正试图通过标签上传多个图像。标记调用名为fileupload.cfm的文件来处理/完成图像 在该图像中,我想启动一个线程(这里可能是我不理解线程的地方,所以请让我知道),这样我就可以将“图像上载”回复回flash upload应用程序,但启动缩略图生成过程(可能会持续1分钟左右,具体取决于文件大小) 到目前为止,我添加了如下内容: <!--- BUILD A THREAD TO CREATE / GENERATE THUMBNAILS ---> <cfthread actio

我正试图通过
标签上传多个图像。标记调用名为
fileupload.cfm
的文件来处理/完成图像

在该图像中,我想启动一个线程(这里可能是我不理解线程的地方,所以请让我知道),这样我就可以将“图像上载”回复回flash upload应用程序,但启动缩略图生成过程(可能会持续1分钟左右,具体取决于文件大小)

到目前为止,我添加了如下内容:

<!--- BUILD A THREAD TO CREATE / GENERATE THUMBNAILS --->
<cfthread action="run" name="t#qMid.mid#">
    <cfinvoke component="core.media-functions" method="generateThumbnails">
        <cfinvokeargument name="mid" value="#qMid.mid#">
    </cfinvoke> 
</cfthread>

我正在调用
generateThumbnails
方法,并使用
media id(mid)
作为要处理的项目的参考。我认为当我们到达
fileupload.cfm
文件的末尾时,线程就死了

不确定这是否只是我应该尝试在上传所有文件后运行的东西

想法?不知道如何让它正常工作

编辑


经过一些修补,看起来我有一个与我修复的线程无关的错误,但是我应该记住这样的“离开”线程吗?我应该在某个时候杀了他们吗?完工后他们会被清理干净吗?如何在线程上设置“最大执行时间”?

如果运行线程,并且在某个时间点上没有实际调用
,线程将与页面执行线程并行运行,并且如果需要,将运行更长的时间,直到它完成任务为止

让线程像这样运行是没有问题的——一旦它们完成,它们将像您期望的那样被清理

如果您想查看线程是否正在运行,只需运行
cfstat
,它将列出所有正在运行的请求,甚至是由
cfthread
启动的请求

你可能看过CF文档,但更进一步,请查看Ben Nadal的调查

至于线程超时-您可以指定等待创建的线程重新加入页面执行的最长时间,但AFAIK无法在创建的线程上设置超时(如页面请求超时)


希望有帮助

如果您运行一个线程,并且在某个时间点上没有实际调用
,那么该线程将与页面执行线程并行运行,并且如果需要,将运行更长的时间,直到它完成任务为止

让线程像这样运行是没有问题的——一旦它们完成,它们将像您期望的那样被清理

如果您想查看线程是否正在运行,只需运行
cfstat
,它将列出所有正在运行的请求,甚至是由
cfthread
启动的请求

你可能看过CF文档,但更进一步,请查看Ben Nadal的调查

至于线程超时-您可以指定等待创建的线程重新加入页面执行的最长时间,但AFAIK无法在创建的线程上设置超时(如页面请求超时)

希望有帮助

请注意:

这些文档讨论的是“零个或多个特定于应用程序的属性”。我会注意这一点。这将创建变量的本地副本,允许您传入不会更改的值

所以,我会打电话给你

<cfthread action="run" name="t#qMid.mid#" mid="#qMid.mid#">
    <cfinvoke component="core.media-functions" method="generateThumbnails">
        <cfinvokeargument name="mid" value="#mid#">
    </cfinvoke> 
</cfthread>

有意义吗?

请注意:

这些文档讨论的是“零个或多个特定于应用程序的属性”。我会注意这一点。这将创建变量的本地副本,允许您传入不会更改的值

所以,我会打电话给你

<cfthread action="run" name="t#qMid.mid#" mid="#qMid.mid#">
    <cfinvoke component="core.media-functions" method="generateThumbnails">
        <cfinvokeargument name="mid" value="#mid#">
    </cfinvoke> 
</cfthread>

有道理吗