【问题标题】:AJAX MySQL query progress barAJAX MySQL 查询进度条
【发布时间】:2015-10-01 13:33:16
【问题描述】:

是否可以使用 AJAX 显示当前 MySQL 查询进度? 我有一个从 MySQL 数据库获取数据的简单 AJAX 请求,但有时需要 5 秒(取决于行数)。

代码如下:

$.ajax({
        xhr: function()
                  {
                    var xhr = new window.XMLHttpRequest();

                    //Download progress
                    xhr.addEventListener("progress", function(evt){

                         var percentComplete = evt.loaded / evt.total;

                        console.log(percentComplete);

                    }, false);
                    return xhr;
                  },

        url: '/main/pw_RedrawGraph/',
        type: 'POST',
        dataType: 'json',
        data: {
            date_from: date_from,
            date_to:date_to
        },
        success:function(data){
            console.log(data)
        }
    });

如您所见,我尝试使用 xhr 进度但无法正常工作,因为 evt.loaded / evt.total 是无限的

知道如何解决这个问题吗?

【问题讨论】:

  • 查询是从 PHP 完成的吗?另外,什么是需要时间的——实际上是查询数据库,或者对结果做一些事情(比如将其格式化为 HTML)?我认为要解决这个问题,您需要在 PHP 中实现它。
  • 是的,它是用 php 完成的,只需要 5 秒查询有时有 200k 行。我正在使用codeignieter。图表是用 AJAX 重绘的,所以我想制作这个查询的百分比进度条。
  • 如果是查询(不是循环遍历结果)需要时间,我认为您唯一的可能是将其划分为子查询(使用LIMIT)并监控其中有多少完成的。换句话说,这真是太麻烦了。

标签: javascript jquery mysql ajax progress


【解决方案1】:

这是给你的,还是给用户的?

如果您的执行时间差异很小。我很想通过几次基准测试或存储运行所需时间的滚动平均值来猜测它需要多长时间。

然后我会构建一个进度条,填充速度比适当的速度稍慢,因此它很少填充。

我只能使用微调器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 2015-05-13
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-15
    相关资源
    最近更新 更多