我需要循环一组图像路径来抓取、调整大小并将图像从外部目的地存储到S3。
我习惯于叫cfcs这样做:
<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 .)
谢谢你帮忙!
发布于 2012-08-24 18:24:53
都不要用类似的..。
外部循环(可能在全局范围内,例如应用程序):
<cfset form_img_hander = createObject('component','dotted.path.to.form_img_hander') />
or
<cfset form_img_hander = new dotted.path.to.form_img_hander() />内部循环:
<cfset imgSuccess = form_img_handler.upload
( command = "upload_search"
, imgPath = results.bildpfad
, imgFile = results.bilddateiname
, sellerILN = results.iln
, cookie = variables.screenWidth
)/>因为它的可读性更强。
您没有性能问题,除非您有一个可重复的测试用例来证明您有性能问题。
关于删除对象的.
如果您没有将对象放置在持久作用域中,则不需要担心删除它们--它们只与请求绑定,并且一旦请求结束,它们将根据需要被垃圾收集。
如果要将对象放置在持久作用域中,则可能仍然不需要担心删除对象,但如果确定要删除对象,则可以使用StructDelete删除对象(与任何其他变量一样)。当然,在需要的时候,你应该小心不要这样做。
发布于 2012-08-24 18:24:39
使用CreateObject实例化对象,并将其赋值给一个变量:
<cfset handler = CreateObject("component", "form_img_handler")>
<cfset handler.upload(URL.command, URL.imgPath ... )>在实例化对象一次之后,可以调用循环中的第2行。
https://stackoverflow.com/questions/12114683
复制相似问题