多くの機能を含むコンポーネント「bulletin.cfc」があります。
私のメイン ページには、cfthread タグを使用して 2 つのスレッドが実行されています。
.net から来て、コンポーネントの 2 つのインスタンスを作成し、各スレッドで 1 つ使用すると考えました。このようにして、それらが互いに混乱することはなく、関数にロックを入れることを心配する必要もありません。
<cfset bullObj = new bulletin()>
<cfset bullObj2 = new bulletin()>
これは正しいです?
編集:
これまでの回答に感謝しますが、これで発生している問題はまだ理解できません。2 つの個別の cfthread 要素内に次のコードがあります。
<cfset listCount = 1>
<cftry>
<cfquery name="ins" datasource="#datasourceVar#" >
INSERT INTO element_user_shown
(elementid, userid, date_shown)
(
<cfloop list="#elementIDList#" index="lcv">
SELECT #lcv#, #tmpuserid#, GETDATE()
<cfif listCount LT listlen(elementIDList)>
UNION ALL
</cfif>
<cfset listCount = listCount + 1>
</cfloop>
)
</cfquery>
これは一晩で約 70,000 回実行されますが、毎回約 3 ~ 4 個のエラーが発生します。次のようにエラーが発生するSQLを確認する
INSERT INTO element_user_shown
(elementid, userid, date_shown)
(
SELECT 621, 267509, GETDATE()
UNION ALL
SELECT 586, 267509, GETDATE()
UNION ALL
SELECT 594, 267509, GETDATE()
UNION ALL
SELECT 613, 267509, GETDATE()
SELECT 622, 267509, GETDATE()
SELECT 599, 267509, GETDATE()
SELECT 602, 267509, GETDATE()
)