javascript逐行显示数据及php实时输出前端内容后台保持继续运行的解决方案(setTimeout定时器、flush和ob_flush函数、安装进度展示)

简介: javascript逐行显示数据及php实时输出前端内容后台保持继续运行的解决方案(setTimeout定时器、flush和ob_flush函数、安装进度展示)

在数据可视化大屏显示的过程中,需要ajax读取后台数据,然后在前端显示出来。一般来说,异步加载后,遍历循环输出,数据正常情况下会一下子全部展示出来,能不能将返回的数据逐行输出呢?

在php后台安装程序过程或者数据库备份时,基于php的运行特点,是执行完全部代码后才予以输入内容。能否在后台运行的同时又让前端显示内容,避免用户不知道等待多少时间带来的无助感呢?

一、前端Ajax展示的解决方案

HTML容器

<div class="text-box" id="text-box">
    <div class="license" id="license"></div>
</div>


js数组静态模拟数据

  for (var i = 0; i < 1000; i++) {
        (function (t) {//形参
            setTimeout(function () {
                // console.log(`这是第 ${t} 次`);
                $("#license").append(t + " 账号创建成功...<br/>");
            }, 500 * t);// 执行一次的时间间隔,非累加
        })(i)  //注意实参,将要用的参数传进去
    }


演示效果

二、php实时输出前端内容的解决方案

案例采用Discuz!安装进度的经典案例作为分析。

构建HTML容器

<div class="text-box" id="text-box">
    <div class="license" id="license"></div>
</div>


showMessage(message)封装函数

   function showMessage(message) {
            document.getElementById('license').innerHTML += message + "<br/>";
            document.getElementById("text-box").scrollTop = 500 + scroll_height;
            scroll_height += 100;
        }

PHP后台数据模拟

set_time_limit(0);   //设置运行时间
echo str_repeat(" ",4096);//随便输出一段代码当即输出
showjsmessage('数据表 ... 创建成功');
for ($i = 0; $i < 100; $i++) {
    showJSMessage($i);
}
//抛出JS信息
function showJSMessage($message)
{
    echo '<script type="text/javascript">showMessage(\'' . addslashes($message) . '\');</script>' . "";
    flush();
    ob_flush();
}


常见问题说明

php采用showMessage(message)的方式,并没有出现向ajax显示一样的逐行显示动画;

采用网上通用的增加sleep(1)函数,不管是在windows系统还是linux系统,只是延迟了显示时间,也未出现逐行展示的动画效果;

因此,案例仍按Discuz!的经典写法只使用flush()和ob_flush()函数作为强制输出缓冲的方法;

set_time_limit(0); 一定要设置运行时间,否则,php运行时间过长会自动停止运行;

@漏刻有时

相关文章
|
5天前
|
Java 程序员 PHP
01 入门PHP就来我这-安装phpstudy
路老师的PHP入门教程,带你从零开始学习PHP。首先下载并安装phpStudy,接着配置域名和端口,最后创建并运行第一个PHP文件。内容详实,适合初学者。
22 3
01 入门PHP就来我这-安装phpstudy
|
10天前
|
JavaScript 前端开发 Java
[JS]同事:这次就算了,下班回去赶紧补补内置函数,再犯肯定被主管骂
本文介绍了JavaScript中常用的函数和方法,包括通用函数、Global对象函数以及数组相关函数。详细列出了每个函数的参数、返回值及使用说明,并提供了示例代码。文章强调了函数的学习应结合源码和实践,适合JavaScript初学者和进阶开发者参考。
20 2
[JS]同事:这次就算了,下班回去赶紧补补内置函数,再犯肯定被主管骂
|
5天前
|
自然语言处理 编译器 应用服务中间件
PHP在服务器上的运行过程
PHP在服务器上的运行过程
23 7
|
21天前
|
NoSQL MongoDB PHP
PHP7 MongDB 安装与使用
10月更文挑战第19天
29 1
PHP7 MongDB 安装与使用
|
5天前
|
数据库连接 PHP Apache
PHP在Apache中如何运行?
PHP在Apache中如何运行?
13 5
|
9天前
|
前端开发 JavaScript 开发者
除了 Generator 函数,还有哪些 JavaScript 异步编程解决方案?
【10月更文挑战第30天】开发者可以根据具体的项目情况选择合适的方式来处理异步操作,以实现高效、可读和易于维护的代码。
|
28天前
|
前端开发 JavaScript
乾坤qiankun(微前端)样式隔离解决方案--使用插件替换前缀
乾坤qiankun(微前端)样式隔离解决方案--使用插件替换前缀
268 8
|
23天前
|
JavaScript 前端开发
JavaScript 函数语法
JavaScript 函数是使用 `function` 关键词定义的代码块,可在调用时执行特定任务。函数可以无参或带参,参数用于传递值并在函数内部使用。函数调用可在事件触发时进行,如用户点击按钮。JavaScript 对大小写敏感,函数名和关键词必须严格匹配。示例中展示了如何通过不同参数调用函数以生成不同的输出。
|
25天前
|
存储 JavaScript 前端开发
JS函数提升 变量提升
【10月更文挑战第6天】函数提升和变量提升是 JavaScript 语言的重要特性,但它们也可能带来一些困惑和潜在的问题。通过深入理解和掌握它们的原理和表现,开发者可以更好地编写和维护 JavaScript 代码,避免因不了解这些机制而导致的错误和不一致。同时,不断提高对执行上下文等相关概念的认识,将有助于提升对 JavaScript 语言的整体理解和运用能力。
|
1月前
|
设计模式 前端开发 JavaScript
前端编程的异步解决方案有哪些?
本文首发于微信公众号“前端徐徐”,介绍了异步编程的背景和几种常见方案,包括回调、事件监听、发布订阅、Promise、Generator、async/await和响应式编程。每种方案都有详细的例子和优缺点分析,帮助开发者根据具体需求选择最合适的异步编程方式。
64 1