php 导入导出怎么做成有进度条

php 导入导出怎么做成有进度条,第1张

先获取整体任务,然后以一个维度来量化,再随时取当前进度,除以整体的,再化整

比如一个文件内有x行要读入,那么虽然每行内容大小不一,但可以看做计算完每行算完成总体进度1/x

那么如果要每处理完一行,就要响应不断的查询和进行一个输出,会影响性能的,而且你的导入方式必须能够量化每一步

比如这样

$file_size=文件内数据行数

$current=0//第一行,开始

while (没处理完)

{

导入一行

$current++

输出 $current/$file_size * 100

//继续

}

显而易见,这得你的处理是逐步的....如果你是用某种现成的直接导入导出文件的函数,你根本不会获取到中间执行的过程.

<?php//防止执行超时set_time_limit(0)//清空并关闭输出缓存ob_end_clean()//需要循环的数据for($i = 0$i <188$i++){ $users[] = 'Tom_' . $i}//计算数据的长度$total = count($users)//显示的进度条长度,单位 px$width = 500//每条记录的 *** 作所占的进度条单位长度$pix = $width / $total//默认开始的进度条百分比$progress = 0?><html><head><title>动态显示服务器运行程序的进度条</title><meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" /><style>body,div input { font-family: Tahoma font-size: 9pt}</style><script language="JavaScript"><!-- function updateProgress(sMsg, iWidth) { document.getElementById("status").innerHTML = sMsg document.getElementById("progress").style.width = iWidth + "px" document.getElementById("percent").innerHTML = parseInt(iWidth / <?php echo $width?>* 100) + "%" } --></script></head><body> <div style="margin:50px autopadding: 8pxborder: 1px solid graybackground: #EAEAEAwidth: <?php echo $width+8?>px"> <div style="padding: 0background-color: whiteborder: 1px solid navywidth: <?php echo $width?>px"> <div id="progress"style="padding: 0background-color: #FFCC66border: 0width: 0pxtext-align: centerheight: 16px"></div> </div> <div id="status"></div> <div id="percent" style="position: relativetop: -30pxtext-align: centerfont-weight: boldfont-size: 8pt">0%</div> </div><?phpflush()//将输出发送给客户端浏览器foreach($users as $user){ // 在此处使用空循环模拟较为耗时的 *** 作,实际应用中需将其替换; // 如果你的 *** 作不耗时,我想你就没必要使用这个脚本了 :) for($i = 0$i <1000000$i++) { } ?><script language="JavaScript">updateProgress("正在 *** 作用户 <?php echo $user?>....", <?php echo min($width, intval($progress))?>)</script><?php flush()//将输出发送给客户端浏览器,使其可以立即执行服务器端输出的 JavaScript 程序。 $progress += $pix} //end foreach?><script language="JavaScript"> //最后将进度条设置成最大值 $width,同时显示 *** 作完成 updateProgress(" *** 作完成!", <?php echo $width?>)</script><?phpflush()?></body></html


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9835037.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存