最近在ColdFusion项目中遇到一个很棘手的问题
需求:遍历用户id,cfm向服务器发送检验id真实情况的请求,如果请求返回失败则等一分钟重试,同时跳出循环,否则继续执行
问题:因为目前没有真实环境,所以请求一定会失败,在线程等待1分钟的时候,页面直接超时了ERROR_NO_RESPONSE
开始排查原因
1.web超时设置,修改并添加了几处<cfsetting requestTimeout="3600">,并无卵用
2.修改coldFusion管理界面的超时时长,和1.同样道理,并重启服务器,还是不行
3.谷歌原因大概是服务器响应超时,因为对服务器不了解,不知道在哪里设置,这个路走不通
4.既然请求中不能加sleep,只能把sleep放在前端了,但cfm在template请求跳转时,出现了页面空白,同时Faild
5.既然不能主线程sleep,只能把sleep放在子线程了,使用js的setTimeout()执行,经过层层调试,终于界面不超时了,可查看日志发现,cfm的方法不是间隔一分钟,而且同时执行,这个时候郁闷了,明明是放在1分钟之后写的调用,怎么不行啊?
猜测可能是js中调用cf方法时,不兼容导致,因为F12查看source时js函数是顺序执行的。也就是cfm模板加载时cfm函数已经都执行了一遍,没有按照js写的条件
不知道cfm是否有setTimeout之类的标签,目前阻塞中