SQL中的进度条

时间:2015-10-02 10:05:13

标签: javascript sql progress

所以我了解到为SQL查询创建进度条并不是一件容易的事。所以我试图想出一个替代解决方案,以指示何时完成任务。我想我可以花时间在数据库中执行一个查询需要多长时间,然后根据必须执行的查询数量创建一个估计,然后根据该信息创建一个进度条。我知道它不是一个100%可靠的解决方案,因为如果出现问题它仍然会显示进度条,但它至少会给用户一些指示何时完成工作,而不是仅仅有一个加载微调器。

这个问题有更好的解决方案吗?

编辑以回答一些问题

这是需要时间的更新功能。我在数据库中可能有15.000个输入,我必须通过API更新所有15.000。首先,我必须提取所有这些的id,并使用API​​来获取更新的信息,然后我必须使用更新的信息执行所有15.000查询。这一切都需要时间。我怀疑它能否迅速完成。有一个15.000个查询的数据库,我花了大约2个小时。我不相信一个旋转器2小时没有指示何时完成是可行的。我需要某种估计。

请注意,更新数据库很少会完成。就像每周一次,用户将更新数据库。

1 个答案:

答案 0 :(得分:0)

您可以使用reverse-ajax然后将结果返回到iframe。

在服务器端,使用repsonse.flush(ASP.NET)在完成一个迭代步骤时向客户端获取部分结果。

输出JavaScript代码,如:

window.parent.fnReportProgress(25.3)

此外,请确保您不会更新每条进度消息。 而是将消息存储在一个数组中,然后每x毫秒(setInterval)轮询该数组直到完成。如果您没有将所有消息放入数组中,而是立即更新进度条,您将在IE中获得蓝屏,并且仅在IE中显示。 Chrome + FF工作得很好。

如果您只需要在中途现代服务器(IIS 8+)上支持中途现代浏览器(IE10 +),您也可以使用WebSockets。

WebSockets也适用于服务器< IIS8,但是你必须在一个单独的端口上单独开发web-socket服务器应用程序。