coldfusion - 正确使用 cflock 标签 ColdFusion

标签 coldfusion coldfusion-8

我知道正确的使用方法 <cflock>对于 cf 开发人员来说,这是 www 上一个相当大的话题。

当我试图更好地理解它时,我创建了一个简单的 UDF,它接受一个 session 数组,我想知道考虑到它是一个简单的 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>

这是一个简单的函数,它接受一个数组类型的参数,它是购物车的 session 变量。它还接受一个数字 partnumber .然后搜索结构数组以找到匹配的值。

由于这是一个 session 数组,我想我会应用 cflock到它,以便它知道锁定数组的读取,以防 CF 版本有任何差异,我已使用 ColdFusion 8 对其进行编码,我希望任何经验丰富的 CF 开发人员都能够确认这一点这是锁定 session 变量读取的正确方法。

加载页面时,此函数最多可以处理 200 次,这是处理此类数据的最佳方式 cflock ?

最佳答案

在 ColdFusion 中,数组是按值复制的,因此这不是 session 范围内的数组,而是它的副本。无需锁定它。

但是需要确保所有函数局部变量都是 VAR编辑:idx不是。

关于coldfusion - 正确使用 cflock 标签 ColdFusion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19193303/

相关文章:

mysql - 将文件保存到 Coldfusion 中的服务器,存储在 CF 临时目录中而不是指定的目的地

javascript - cfajaxproxy 的简单表单不起作用

reporting-services - ColdFusion 报告选项

coldfusion - 如何将外部网站的 HTML 检索到 ColdFusion 中的变量中?

mysql - Coldfuson CFScript "setSQL"方法未找到

struct - 数组中结构体的总和

java - 使用 notnoop 的 java-apns 库时导致此错误的原因是什么?

mysql - 执行 QoQ 后未获得所需的输出

Coldfusion 2021 传递给日期函数 createDateTime 的日期值未指定或无效 - 在 createDateTime 函数中指定有效日期

iis - 使用 ColdFusion 获取当前 IIS 应用程序名称