4

<cflock>正しい使用方法は、www で cf 開発者の間で非常に大きな話題になっていることを知っています。

私はそれをもう少しよく理解しようとしているので、私が作成した単純な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 バージョンに違いがある場合に備えて、配列の読み取りをロックダウンすることを認識できるように、これに a を適用すると考えました。ColdFusion 8 を使用してこれをコーディングしました。ベテランの CF 開発者であれば、これがセッション変数の読み取りをロックダウンする正しい方法であることを確認できることを願っています。

この関数は、ページの読み込み時に最大 200 回処理される可能性があります。このタイプのデータをcflock?

4

1 に答える 1

3

ColdFusion では配列は値によってコピーされるため、これはセッション スコープの配列ではなく、そのコピーです。ロックする必要はありません。

ただし、すべての関数ローカル変数がed:ではないことを確認する必要がありますVARidx

于 2013-10-05T07:34:48.337 に答える