首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该使用cfobject还是cfinvoke来执行重复任务?

我应该使用cfobject还是cfinvoke来执行重复任务?
EN

Stack Overflow用户
提问于 2012-08-24 18:19:06
回答 2查看 463关注 0票数 2

我需要循环一组图像路径来抓取、调整大小并将图像从外部目的地存储到S3。

我习惯于叫cfcs这样做:

代码语言:javascript
复制
<cfinvoke component="form_img_handler" method="upload" returnvariable="imgSuccess">
    <cfinvokeargument name="command" value="upload_search"/>
    <cfinvokeargument name="imgPath" value="#results.bildpfad #"/>
    <cfinvokeargument name="imgFile" value="#results.bilddateiname#"/>
    <cfinvokeargument name="sellerILN" value="#results.iln#"/>
    <cfinvokeargument name="cookie" value="#variables.screenWidth#"/>
</cfinvoke>

问题:

如果我必须在一个循环中完成这个25x,那么使用cfobject而不是cfinvoke会更好吗?据我所知,cfinvoke被实例化,运行它的作业并消失。而cfobjects会留在那里。如果是这样的话,在上述情况下使用cfobject会更好吗?如果是这样的话,我如何调用我的upload函数(传递参数),以及如何在完成之后删除该对象?

(以前从未使用过cfobject .)

谢谢你帮忙!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-24 18:24:53

都不要用类似的..。

外部循环(可能在全局范围内,例如应用程序):

代码语言:javascript
复制
<cfset form_img_hander = createObject('component','dotted.path.to.form_img_hander') />
or
<cfset form_img_hander = new dotted.path.to.form_img_hander() />

内部循环:

代码语言:javascript
复制
<cfset imgSuccess = form_img_handler.upload
    ( command   = "upload_search"
    , imgPath   = results.bildpfad
    , imgFile   = results.bilddateiname
    , sellerILN = results.iln
    , cookie    = variables.screenWidth
    )/>

因为它的可读性更强。

您没有性能问题,除非您有一个可重复的测试用例来证明您有性能问题。

关于删除对象的.

如果您没有将对象放置在持久作用域中,则不需要担心删除它们--它们只与请求绑定,并且一旦请求结束,它们将根据需要被垃圾收集。

如果要将对象放置在持久作用域中,则可能仍然不需要担心删除对象,但如果确定要删除对象,则可以使用StructDelete删除对象(与任何其他变量一样)。当然,在需要的时候,你应该小心不要这样做。

票数 10
EN

Stack Overflow用户

发布于 2012-08-24 18:24:39

使用CreateObject实例化对象,并将其赋值给一个变量:

代码语言:javascript
复制
<cfset handler = CreateObject("component", "form_img_handler")>
<cfset handler.upload(URL.command, URL.imgPath ... )>

在实例化对象一次之后,可以调用循环中的第2行。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12114683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档