アプリケーション ID のリストをループ処理するルーチンが ColdFusion にあります。そのリスト内で、PDF ドキュメントの生成やマージなど、多くのことが行われます。これは非常に遅くなるので、cfthread でできることを調べてみました。結果は有望です。40 秒の実行時間が 4 秒に短縮されます。
ただし、cfthread は、その性質上、ループが何を行っているかを認識していません。これがコードサンプルです。
<cfloop list="#form.User_Id#" index="x">
<cfthread name="thread#x#" action="run" index="#x#">
<cfdocument format="PDF" name="report" filename="#fileToDownload#" overwrite="yes">
<cfdocumentsection>
<cfquery name="example" datasource="DS">
SELECT * FROM Table
WHERE ID = #x#
</cfquery>
<cfoutput query="example">
All the output
</cfoutput>
</cfdocumentsection>
</cfthread>
</cfloop>
<cfthread action="join" />
最終的に何が起こるかというと、すべてのループ反復がリストの最後の値を繰り返すということです。では、これを機能させるには、一体何をする必要があるのでしょうか?
ありがとう!