ColdFusionで多量のクエリーを発行するとjava.Lang.OutOfMemoryで止まってしまう場合の解決方法

ColdFusionのデバッグが有効になっていると、ColdFusionはクエリーの情報をデバッグ用に保存しておくため、クエリーを発行すればするだけメモリーを消費していき、最終的にはColdFusionがメモリーを使い果たして止まってしまいます。

なので、大量のクエリーを発行する場合はAdministration画面でデバッグを無効にするか、cfqueryタグにdebug=”no”属性を付加しておくことが重要です。

<cfquery debug="no">
INSERT INTO ...
</cfquery>

またColdFusionに割り当てるメモリーを増やすことでも解決できる場合があります。メモリー割り当ての方法についてはマニュアルを参照してください。

ColdFusionでsleepをさせるには

ColdFusionで、ループの処理などを行っているとウェイトを入れたくなるときがあります。ColdFusionの関数にはウェイトを入れる関数がないので、JavaのThreadクラスのオブジェクトを作り、それを使ってウェイトを入れる必要があります。具体的には以下のコード

<!--- 5秒間スリープ --->
<cfset thread = CreateObject("java", "java.lang.Thread") />
<cfset thread.sleep(5000) />