在使用<cfexecute>调用的进程完成之前,如何强制ColdFusion停止呈现页面?</cfexecute>

时间:2011-05-03 23:00:47

标签: coldfusion mysqldump coldfusion-9

我正在编写一个脚本,通过<cfexecute>创建一个MySQL转储,然后将SQL脚本FTP到另一台服务器。我已经每秒检查一次以查看文件大小是否已更改,如果在过去五秒内没有更改,我认为它已完成。

这对当前应用程序来说很好,但最终我希望能够在第二台服务器上导入SQL脚本并提供已完成的某种通知。

有没有办法跟踪正在运行的进程的状态?

如果没有,有没有办法通过ColdFusion单独完成数据库导出和导入?

2 个答案:

答案 0 :(得分:4)

实际上你可能没有意识到,但是当你在没有传递超时属性的情况下调用<cfexecute>时,它默认为'0'超时。如果您阅读<cfexecute>上的文档,您会看到:

  

如果值为0:

ColdFusion starts a process and returns immediately. ColdFusion may
     

将控制权返回给调用页面   在任何程序输出显示之前。至   确保显示程序输出,   将值设置为2或更高。

所以我建议传递一个更高的超时值,这会导致ColdFusion等待mysqldump完成,然后再继续。

Reference

答案 1 :(得分:2)

查看Event Gateways [1]以了解处理异步操作的一种方法。有一个目录观察器网关以CF附带为例。[2]

除此之外,使用CF Scheduled Tasks创建某种批处理工具。将作业添加到数据库表,并使计划任务定期从表中提取作业并执行它们,并报告结果。第二个计划任务可以检测到第一个已完成并执行该过程的下一步。

[1] http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec214e3-7fa7.html [2] http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec22c24-77f7.html