簡體   English   中英

我應該使用cfobject或cfinvoke進行重復性任務嗎?

[英]Should I use cfobject or cfinvoke for a repetitive task?

我需要遍歷一組圖像路徑來抓取,調整大小並將圖像從外部目標存儲到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如何調用我的upload函數(傳遞參數)以及如何在完成后刪除對象?

(從未使用過cfobject ......)

感謝幫助!

也不要使用像...這樣的東西

外部循環(可能在全局范圍內,例如應用程序):

<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將其刪除(就像任何其他變量一樣)。 當然,你應該注意不要在需要的時候這樣做。

使用CreateObject實例化對象並將其分配給變量:

<cfset handler = CreateObject("component", "form_img_handler")>
<cfset handler.upload(URL.command, URL.imgPath ... )>

在實例化對象一次后,可以在循環中調用第二行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM