我正在ColdFusion中编写数据库加载脚本。它在十几个表中加载大约150,000条记录。我正在通过Web浏览器请求运行脚本。我请求页面后有没有办法杀死进程?我可以在浏览器中停止页面,但数据库在后端继续插入,直到脚本完成,这使调试过程非常缓慢,因为我每次都必须运行整个脚本。我可以通过Java后端做些什么吗?
我所处的环境是通过IIS运行的ColdFusion 8。我禁用了性能监视,但我希望能够像在性能监视器中那样模仿杀死作业的能力。
答案 0 :(得分:3)
我试图制作像Unix pid-file这样的东西:你的脚本应该定期(可能每次10/100/1000次迭代)检查文件系统中某个文件的可用性,如果它包含某个值,则停止执行,或者如果存在或根本不存在。
当然,这可以是数据库中的字段,应用程序范围中的变量(具有适当的锁定策略),或者您认为合适的任何内容。
您还需要第二个脚本,它将更改“pid-object”的状态。这可以像您可以使用浏览器拉动的另一个.cfm一样简单。
答案 1 :(得分:2)
在150,000条记录的循环中,您可以按照您认为合适的数字停止它。设置一个计数器变量,只要它在循环中到达<cfabort>
或<cfbreak>
。
答案 2 :(得分:2)
您可能希望使用cfthread运行该过程。
像......一样开始你的过程。
<cfthread name="myThread" action="run">
...Your loop to insert into database....
</cfthread>
然后你可以使用...
来杀死线程<cfthread action="terminate" name="myThread"/>
答案 3 :(得分:1)
如果安装了FusionReactor等管理软件,可以使用它来暂停运行脚本。
答案 4 :(得分:0)