这篇文章主要介绍了关于PHP导入进度条类,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

最近在做一个客户导入的功能,整理的一个导入的进度条类:<?php

/**

* @File name: Loading.php

* @Author: jiumi.jin

* @Create time: 10/11/2012

* @Main function: loading

*/

class Loading {

private $width = 500;

private $total = 0;

private $start_time;

private $faileLines = array();

private $faileCounter = 0;

/**

* 构造

* @param 进度条长度 $width

* @param 要处理的数据长度 $length

*/

public function __construct($param){

ob_start();

//$this->width = $width;

$this->total = $param['length'];

$this->start_time = time();

ob_end_clean();

}

/**

* 执行进度跟踪

* @param $num 执行的数据点,这个数字应该是0 到 数据的总长度

* @return bool

*/

public function run($num){

$successNum = $num - $this->faileCounter;

$percent = number_format($num / $this->total * 100,2) . '%';

echo "";

print str_pad("",100000);

ob_flush();

return true;

}

/**

* 占用内存跟踪

* @param $i 进度

* @param $progress_mem 占用内存

* @return bool

*/

public function run_mem($i,$progress_mem){

echo "";

print str_pad("",100000);

ob_flush();

return true;

}

/**

* 设置出错的点

* 例如导入excel的时候,有不符合模板规范的行数可以在这里设置

* @param $line 错误行数

* @param $errMes 错误信息

*/

public function setFaileLine($line,$errMes){

$line = intval($line);

if ($line != 0) {

$this->faileCounter++;

$this->faile = true;

$this->faileLines[$this->faileCounter]['line'] = $line;

$this->faileLines[$this->faileCounter]['errMessage'] = $errMes;

echo "";

print str_pad("",100000);

ob_flush();

return true;

}

}

public function getFaileCounter(){

return $this->faileCounter;

}

/**

* 获取出错的点

*

* @return string $html

*/

public function getFaileLine(){

$html = '';

if(!empty($this->faileLines)){

foreach($this->faileLines as $failline){

$html .= '错误位置:'.$failline['line'].', 错误信息:'.$failline['errMessage'].'
';

}

}else{

$html .= '没有错误信息';

}

return $html;

}

/**

* echo出进度条的html页面和js函数

* 应该在实例化类后立刻执行此方法,否则会失败

*

* @return unknown

*/

public function createHtml(){

echo ""-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/transitional.dtd\">

function updatePercent(have_process,errCount,percent){

document.getElementById('msg').innerHTML = '成功处理了 '+have_process+' 条数据';

document.getElementById('errMsg').innerHTML = '失败 '+errCount+' 条数据';

document.getElementById('progress').style.width = percent;

document.getElementById('percent').innerHTML = percent;

if(document.getElementById('progress').style.width == '100%'){

document.getElementById('percent').innerHTML = '处理完毕!';

stop();

}

}

function showErr(msg){

document.getElementById('allErr').innerHTML = msg;

}

//计时

var CallTimeLen = \"0\";

var timer1 = null;

function start(){

var hour=\"0\";

var minute=\"0\";

var second=\"0\";

CallTimeLen = parseInt(CallTimeLen)+1;

hour = parseInt(CallTimeLen/3600);

minute = parseInt(CallTimeLen/60);

second = CallTimeLen%60;

document.getElementById('time_h').innerHTML = hour;

document.getElementById('time_m').innerHTML = minute;

document.getElementById('time_s').innerHTML = second;

window.timer1 = window.setTimeout(\"start()\",1000);

}

setTimeout(\"start()\",0);

function stop(){

clearTimeout(window.timer1);

}

function showMem(i,progress){

document.getElementById('showM').innerHTML = '_____'+i+': '+progress;

}

width."px\">

此操作需要等待一段时间,在执行完毕之前,请不要关闭此页面

width."px\">

已用时: 时

0%

";

return true;

}

}

CI框架的调用:$this->load->library('loading',array('length'=>$totle)); //加载进度条类,这是CI框架

$this->loading->createHtml();

//$start_mem = memory_get_usage();

foreach($customers as $key=>$customer){

$return = $this->insert_import($customer);

if($return != 1){

$this->loading->setFaileLine($key+1,$return); //记录错误

}else{

$this->loading->run($key+1); //成功进度条

}

//$progress_mem = memory_get_usage();

//$this->loading->run_mem($key,$progress_mem-$start_mem); //测试查看内存使用情况的

}

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

php插入数据进度条,PHP导入进度条类相关推荐

  1. jdbc 3种获得mysql插入数据的自增字段值的方法_【JDBC】向数据表插入数据时,自动获取生成的主键...

    数据表设计时,一般都会有一个主键(Key)(自己指定),有时也可以使用联合主键: 有许多数据库提供了隐藏列为表中的每行记录分配一个唯一键值(如:rowid): 当我们没有指定哪一列作为主键key时,数 ...

  2. 错误 0xc0202049: 数据流任务 1: 无法在只读列“ID”中插入数据

    数据库导入导出时总失败,错误信息如下: 正在验证 (错误) 消息 错误 0xc0202049: 数据流任务 1: 无法在只读列"ID"中插入数据.  (SQL Server 导入和 ...

  3. sql2005 无法在只读列“id”中插入数据

    错误现像1:您有一个payid列,源表中此payid列的值是(1,7,8,11,15,17.....),数据库导入到目标表后payid列的值为(1,2,3,4,5,6....),目标列的值与源表中列值 ...

  4. .Net Framework4.5中Asp.net mvc使用Singal R轮训实现导入进度条功能

    .Net Framework4.5中Asp.net mvc使用Singal R轮训实现导入进度条功能 我的项目需求是:在.net4.5中用mvc5实现上传xml文件,后台实时导入数据库时传到前台进度, ...

  5. java导出excel带上进度条_导出数据至Excel前台js进度条不能隐藏

    在导出数据至Excel时,有时数据会比较大,响应的时间会比较长,想做一个提示进度条,在点击导出数据按钮进,进度条显示出来,在数据导出完毕并成功弹出保存对话框时,进度条自动隐藏起来,但现在有个问题,点击 ...

  6. oracle导入亿条数据耗时,如何在十分钟内插入1亿条记录到Oracle数据库?

    这里提供一种方法,使用 APPEND 提示,使得十分钟内插入上亿数据成为可能. -- Create table create table TMP_TEST_CHAS_LEE ( f01 VARCHAR ...

  7. oracle查询数据泵状态,PLSQL_数据泵导入进度查看Impdp/Expdp Status(案例)

    使用前提 EXPDP和IMPDP只可以在Oracle服务端使用. EXP导出的文件只可以使用IMP导入,不适用于IMPDP导入文件:EXPDP导出的文件只可以使用IMPDP导入,而不适用于IMP导出文 ...

  8. java导入进度显示_java excel导入获取实时进度

    1.需求 对于成千上万数据量的excel导入,后台处理耗时长,体验差.需要实时展示当前导入的进度,提高使用体验 2.实现思路 采用多线程进行实现 在导入开始执行前,生成一个uuid和进度对象,储存到静 ...

  9. oracle数据插入覆盖,oracle数据库覆盖导入

    oracle数据库备份(导入导出dmp)_IT/计算机_专业资料.包括远程连接 ... oracle数据库导入导出命令_计算机软件及应用_IT/计算机_专业资料.Oracle 数据导入导出 imp/e ...

最新文章

  1. Pytorch实现MNIST(附SGD、Adam、AdaBound不同优化器下的训练比较) adabound实现
  2. R语言基于glmnet构建分类模型并可视化特征系数(coefficient)以及L1正则化系数(lambda)实战
  3. ISP PIPLINE (九_1) Denoise 之 space domain denoise
  4. R语言实现多线性回归模型预测时间序列数据 MLR models in R
  5. 小鑫の日常系列故事(十)——排名次_JAVA
  6. 牛客网 栈的压入、弹出序列
  7. matlab im2double
  8. objective-C CollectionView 加深(添加注册头部View)
  9. Spring tx:advice/
  10. OSPF的基本配置介绍
  11. 基于MATLAB的窗函数滤波器设计,基于matlab的FIR滤波器窗函数设计
  12. 浪潮java面经总结
  13. 5G/NR: CQI 和MCS - 链路自适应,自适应编码
  14. 如何将一张光盘制作成ISO镜像文件
  15. 突破KEIL软件编译时 C51中断号最大只能为31限制的补丁,使中断号可以达到256
  16. 【运筹学】指派问题匈牙利法
  17. 年月日季平均运算,pandas中关于时间序列处理,resample
  18. 复变函数与积分变换---复数
  19. 设备联网工作建设方法和步骤
  20. 深度学习大模型训练--分布式 deepspeed PipeLine Parallelism 源码解析

热门文章

  1. MySQL数据库开发理念_mysql之数据库基本理念
  2. oracle往mysql数据同步存储过程_Oracle数据库之间数据同步
  3. mysql mongodb插件_MySQL和MongoDB设计实例对比分析
  4. 这是我见过最蛋疼的注册中心与API网关实践!
  5. 皮一皮:运气差,可能说的就是这个吧...
  6. Nacos 集群部署模式最佳实践
  7. 年轻代频繁ParNew GC,导致http服务rt飙高
  8. 面试:Java 泛型背后的原理是什么?
  9. java restful项目打包_听说你在接私活? 一个助你效率翻倍的项目工具!!
  10. mysql主从不同步怎么恢复_mysql主从不同步时,怎么恢复