我知道使用<cflock>
的正確方式是www開發者的一個相當大的話題。cflock標籤的正確使用ColdFusion
正如我想更好地理解它,我已經創建了一個簡單的UDF,它需要一個會話數組,我想知道這是否是一個正確的方法來考慮它一個簡單的UDF。
<cffunction name="currentCartQuantity" access="public" returntype="string">
<cfargument name="partnumber" type="numeric" required="yes">
<cfargument name="data" type="array" required="yes">
<cfset var return_data = "0" >
<cflock type="readonly" scope="session" timeout="1">
<cfloop from="1" to="#arrayLen(arguments.data)#" index="idx">
<cfif arguments.data[idx].partnumber IS arguments.partnumber >
<cfset return_data = arguments.data[idx].quantity >
</cfif>
</cfloop>
</cflock>
<cfreturn return_data >
</cffunction>
這是一個簡單的函數,它接受一個數組類型的參數,它是一個購物車的會話變量。它也需要一個數字partnumber
。然後搜索結構數組以查找匹配值。
因爲這是一個會話數組,我想我會對其應用一個cflock
,這樣它就知道要鎖定數組的讀取,以防CF版本有任何不同,我已經使用ColdFusion 8,我希望任何經驗豐富的CF開發人員能夠確認這是鎖定會話變量讀取的正確方法。
當一個頁面被加載時,這個函數最多可以處理200次,這是處理這種類型的數據的最佳方式,cflock
?
我沒有以任何方式看到數組更改值,爲什麼要鎖定會話範圍?不涉及你的問題,但你的函數返回的東西只基於最後的數組元素,而不是每個數組元素。 –
這個想法是,*其他請求*可能會改變數組,丹,鎖是保護*代碼*。考慮到這種情況(根據我的答案),這是一個有爭議的問題。至於你的其他觀察......是的,好點。我認爲他們可能會想在發現自己的價值後從循環中「突破」。 –