我正在编写一个脚本,通过<cfexecute>
创建一个MySQL转储,然后将SQL脚本FTP到另一台服务器。我已经每秒检查一次以查看文件大小是否已更改,如果在过去五秒内没有更改,我认为它已完成。
这对当前应用程序来说很好,但最终我希望能够在第二台服务器上导入SQL脚本并提供已完成的某种通知。
有没有办法跟踪正在运行的进程的状态?
如果没有,有没有办法通过ColdFusion单独完成数据库导出和导入?
答案 0 :(得分:4)
实际上你可能没有意识到,但是当你在没有传递超时属性的情况下调用<cfexecute>
时,它默认为'0'超时。如果您阅读<cfexecute>
上的文档,您会看到:
如果值为0:
ColdFusion starts a process and returns immediately. ColdFusion may
将控制权返回给调用页面 在任何程序输出显示之前。至 确保显示程序输出, 将值设置为2或更高。
所以我建议传递一个更高的超时值,这会导致ColdFusion等待mysqldump完成,然后再继续。
答案 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