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运行时间过长会自动停止运行;

@漏刻有时

相关文章
|
1月前
|
前端开发 JavaScript 数据安全/隐私保护
推荐6款超级好看的开源中后台前端框架
推荐6款超级好看的开源中后台前端框架
63 0
|
1月前
|
前端开发
前端跳转链接报错403的原因以及解决方案
前端跳转链接报错403的原因以及解决方案
129 1
|
2月前
|
编解码 前端开发 UED
前端开发中的跨平台适配解决方案探讨
【2月更文挑战第8天】 在当今多样化的设备和屏幕尺寸下,前端开发人员面临着跨平台适配的挑战。本文将深入探讨目前常见的跨平台适配解决方案,并对比它们的优缺点,帮助开发者更好地选择适合自己项目的方案。
|
2月前
|
前端开发 JavaScript 安全
从前端性能优化角度谈JavaScript代码压缩与混淆
本文从前端性能优化的角度出发,探讨了JavaScript代码压缩与混淆的重要性及实现方式,通过分析不同压缩混淆工具的特点和效果,为开发者提供了实用的指导和建议。
|
29天前
|
JSON 前端开发 安全
前端开发中的跨域问题及解决方案
在前端开发中,跨域是一个常见但又令人头疼的问题。本文将深入探讨跨域产生的原因以及一些常见的解决方案,帮助开发者更好地理解和处理跨域情况。
|
10天前
|
存储 缓存 前端开发
前端如何利用indexDB进行数据优化
使用IndexedDB作为浏览器内置的客户端数据库,用于存储大量数据和实现离线支持。它能缓存常用数据,减少服务器请求,提高用户体验。IndexedDB支持数据索引、复杂查询及版本管理,允许离线操作并同步到服务器。但需熟悉其异步API,可借助Dexie.js、localForage等库简化使用。
|
15天前
|
Web App开发 移动开发 运维
跨域解决方案[前端+后端]
跨域解决方案[前端+后端]
25 0
|
25天前
|
人工智能 前端开发 JavaScript
【前端设计】HTML+CSS+JavaScript基本特性
【前端设计】HTML+CSS+JavaScript基本特性
|
30天前
|
前端开发 JavaScript NoSQL
从前端到后端:构建全栈应用的技术挑战与解决方案
在当今互联网时代,全栈开发成为越来越受欢迎的技术趋势。本文将深入探讨从前端到后端的全栈开发过程中所面临的技术挑战,并提出相应的解决方案,涵盖前端框架选择、后端技术架构、数据库设计以及跨平台兼容性等关键问题。
|
1月前
|
前端开发
前端性能优化:掌握解决方案
我们常说性能永远是第一需求,作为一个前端工程师,不管使用什么框架,不管从事什么类型的网站或应用开发,只要是项目被用户使用,性能优化就永远是你需要关注的问题。通常情况下,工程师们在深入了解前端技术的原理后,才能总结出性能优化的方案,需要多年经验的积累。前端技术日新月异,优秀的性能优化方案在近几年也层出不穷。本课程带你使用当今行业中非常前沿&专业的方案,解决前端性能优化问题。无论是为了解决工作中的实际问题,还是为了提升能力,这门课都能帮到你。
15 2
前端性能优化:掌握解决方案