这篇文章主要介绍了关于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 "<script>updatepercent('$successnum',$this->failecounter,'$percent');</script>";		print str_pad("",100000);		ob_flush();		return true;	}	/**	 * 占用内存跟踪	 * @param $i 进度	 * @param $progress_mem 占用内存	 * @return bool	 */	public function run_mem($i,$progress_mem){		echo "<script>showmem($i,$progress_mem);</script>";		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 "<script>showerr('".$this->getfaileline()."');</script>";			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'].'<br/>';			}		}else{			$html .= '没有错误信息';		}		return $html;	}		/**	 * echo出进度条的html页面和js函数	 * 应该在实例化类后立刻执行此方法,否则会失败	 *	 * @return unknown	 */	public function createhtml(){		echo "<!doctype html public \"-//w3c//dtd xhtml 1.0 transitional//en\" \"http://www.w3.org/tr/xhtml1/dtd/transitional.dtd\">			<html>			<head>  				<script>					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;					}				</script>			</head>			<body>				<p style=\"margin:0 auto; margin-top:4px; margin-bottom:0; padding: 8px; padding-bottom:0; border: 1px solid gray; background: #eaeaea; width:".$this->width."px\">   				   <p><font color=\"gray\"><span style=\"font-size:12px;\">此操作需要等待一段时间,在执行完毕之前,请不要关闭此页面</span></font></p>   				   <p style=\"padding: 0; background-color: white; border: 1px solid navy; width:".$this->width."px\">   					   <p id=\"progress\" style=\"padding: 0; background-color: #ffcc66; border: 0; width: 0px; text-align: center;  height: 16px\"></p>   				   </p>   				   <p id=\"msg\" style=\"font-size:12px;\"></p>				   <p id=\"errmsg\" style=\"font-size:12px;\"></p>				   已用时:<span id=\"time_h\">  </span>时				   <span id=\"time_m\">  </span>分				   <span id=\"time_s\">  </span>秒				   <p id=\"showm\" style=\"font-size:12px;\"></p>				   <p id=\"percent\" style=\"position: relative; top: -32px; text-align: center; font-weight: bold; font-size: 8pt;\">0%</p>				</p>				<p id=\"allerr\">				</p>			<body>			</html>";		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打包zip图片下载的方法
php web请求安全处理
以上就是php导入进度条类的详细内容。
   
 
   