TP6+Layui实现动态进度条

在执行耗时比较长的任务时浏览器总是一个“圈”在哪转,焦急等待之后可能还给你来个超时,解决超时的问题百度一堆,现在主要解决“执行进度状态”。
项目是基于thinkadmin框架写的(Thinkphp6+LayUI),查了layui文档,有个进度条的组件progress,地址是:https://layuion.com/docs/element/progress.html。

实现的思路:dataPro为主程序,getStauts为dataPro的进度查询程序,前端利用js异步获取getStatus的返回值即可实现进度条的动态更新。

在程序dataPro中加入一个session或者redis、缓存、本地文件之类的(可能是我对框架不熟,就是TP框架下的session是在程序执行完之后写入的,意味着程序在执行过程中是获取不到session的,不知道我这么理解对不对,总之实践中获取到的是所有任务执行完了的最终session,估计要等到真大神来解释了),既然session用不了,就用了写文件(自己用不要紧,如果是多用户,可能会有点问题)。
后端代码如下:

public function dataPro(){
    
$num = 1000;//任务总量
$i = 1;
//模拟数据处理
       
...主要执行的程序

            //任务进度百分比,这个值要传给前端组件
            $percent = $i / $num * 100;

            //打开文件
            $f = fopen('tmp.txt','w');
            fwrite($f,$percent);
            fclose($f);

...执行结束

        return 返回执行结果;

    }

    public function getstatus(){
//状态查询,供前端ajax异步调用
        //读取文件
        $f = fopen('tmp.txt','r');
        $percent = fgets($f);
        fclose($f);

//返回百分比
        return $percent;

    }



前端代码:

效果如下:


image.png

肯定不是最优解,但是解决眼前的问题了。

你可能感兴趣的:(TP6+Layui实现动态进度条)