毎晩 10 万通の電子メールを数通送信するアプリケーションがあるため、処理を高速化するためにいくつかの cfthreads を追加しました。
これにより奇妙なエラーが発生し、あるスレッドで作成された変数が別のスレッドによって変更されていることがわかりました。私が読んだドキュメントから、あるスレッドで作成された変数はそのスレッドにのみ表示されるはずですか?
次のような簡単なテストを作成しました。
<cfthread
name="thread1"
action="run">
<cfsavecontent variable="local.template_body">
<cfinclude template="templates\6\2\bulletin_template.cfm">
</cfsavecontent>
<cfset tmpEmailBody = template_body>
</cfthread>
<cfthread
name="thread2"
action="run">
<cffile action="append"
file="C:\inetpub\error1.txt"
output="#tmpEmailBody#">
</cfthread>
「tmpEmailBody」の内容がファイルに正常に書き込まれます。
奇妙なことに、cfsavecontent セクションを削除して、:
<cfset tmpEmailBody = "test">
があると、2 番目のスレッドが発生し、予想どおり tmpEmailBody が定義されていないというエラーが発生します。
ここで何が起こっているか知っている人はいますか?