php插入数据进度条,PHP导入进度条类
这篇文章主要介绍了关于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导入进度条类相关推荐
- jdbc 3种获得mysql插入数据的自增字段值的方法_【JDBC】向数据表插入数据时,自动获取生成的主键...
数据表设计时,一般都会有一个主键(Key)(自己指定),有时也可以使用联合主键: 有许多数据库提供了隐藏列为表中的每行记录分配一个唯一键值(如:rowid): 当我们没有指定哪一列作为主键key时,数 ...
- 错误 0xc0202049: 数据流任务 1: 无法在只读列“ID”中插入数据
数据库导入导出时总失败,错误信息如下: 正在验证 (错误) 消息 错误 0xc0202049: 数据流任务 1: 无法在只读列"ID"中插入数据. (SQL Server 导入和 ...
- sql2005 无法在只读列“id”中插入数据
错误现像1:您有一个payid列,源表中此payid列的值是(1,7,8,11,15,17.....),数据库导入到目标表后payid列的值为(1,2,3,4,5,6....),目标列的值与源表中列值 ...
- .Net Framework4.5中Asp.net mvc使用Singal R轮训实现导入进度条功能
.Net Framework4.5中Asp.net mvc使用Singal R轮训实现导入进度条功能 我的项目需求是:在.net4.5中用mvc5实现上传xml文件,后台实时导入数据库时传到前台进度, ...
- java导出excel带上进度条_导出数据至Excel前台js进度条不能隐藏
在导出数据至Excel时,有时数据会比较大,响应的时间会比较长,想做一个提示进度条,在点击导出数据按钮进,进度条显示出来,在数据导出完毕并成功弹出保存对话框时,进度条自动隐藏起来,但现在有个问题,点击 ...
- oracle导入亿条数据耗时,如何在十分钟内插入1亿条记录到Oracle数据库?
这里提供一种方法,使用 APPEND 提示,使得十分钟内插入上亿数据成为可能. -- Create table create table TMP_TEST_CHAS_LEE ( f01 VARCHAR ...
- oracle查询数据泵状态,PLSQL_数据泵导入进度查看Impdp/Expdp Status(案例)
使用前提 EXPDP和IMPDP只可以在Oracle服务端使用. EXP导出的文件只可以使用IMP导入,不适用于IMPDP导入文件:EXPDP导出的文件只可以使用IMPDP导入,而不适用于IMP导出文 ...
- java导入进度显示_java excel导入获取实时进度
1.需求 对于成千上万数据量的excel导入,后台处理耗时长,体验差.需要实时展示当前导入的进度,提高使用体验 2.实现思路 采用多线程进行实现 在导入开始执行前,生成一个uuid和进度对象,储存到静 ...
- oracle数据插入覆盖,oracle数据库覆盖导入
oracle数据库备份(导入导出dmp)_IT/计算机_专业资料.包括远程连接 ... oracle数据库导入导出命令_计算机软件及应用_IT/计算机_专业资料.Oracle 数据导入导出 imp/e ...
最新文章
- Pytorch实现MNIST(附SGD、Adam、AdaBound不同优化器下的训练比较) adabound实现
- R语言基于glmnet构建分类模型并可视化特征系数(coefficient)以及L1正则化系数(lambda)实战
- ISP PIPLINE (九_1) Denoise 之 space domain denoise
- R语言实现多线性回归模型预测时间序列数据 MLR models in R
- 小鑫の日常系列故事(十)——排名次_JAVA
- 牛客网 栈的压入、弹出序列
- matlab im2double
- objective-C CollectionView 加深(添加注册头部View)
- Spring tx:advice/
- OSPF的基本配置介绍
- 基于MATLAB的窗函数滤波器设计,基于matlab的FIR滤波器窗函数设计
- 浪潮java面经总结
- 5G/NR: CQI 和MCS - 链路自适应,自适应编码
- 如何将一张光盘制作成ISO镜像文件
- 突破KEIL软件编译时 C51中断号最大只能为31限制的补丁,使中断号可以达到256
- 【运筹学】指派问题匈牙利法
- 年月日季平均运算,pandas中关于时间序列处理,resample
- 复变函数与积分变换---复数
- 设备联网工作建设方法和步骤
- 深度学习大模型训练--分布式 deepspeed PipeLine Parallelism 源码解析
热门文章
- MySQL数据库开发理念_mysql之数据库基本理念
- oracle往mysql数据同步存储过程_Oracle数据库之间数据同步
- mysql mongodb插件_MySQL和MongoDB设计实例对比分析
- 这是我见过最蛋疼的注册中心与API网关实践!
- 皮一皮:运气差,可能说的就是这个吧...
- Nacos 集群部署模式最佳实践
- 年轻代频繁ParNew GC,导致http服务rt飙高
- 面试:Java 泛型背后的原理是什么?
- java restful项目打包_听说你在接私活? 一个助你效率翻倍的项目工具!!
- mysql主从不同步怎么恢复_mysql主从不同步时,怎么恢复