文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>来自dedecms的javascript+php进度条

来自dedecms的javascript+php进度条

时间:2010-04-22  来源:admin126com

最近研究大数据量分批操作,需要用到进度条。
之前写过一篇:http://blogguy.cn/show-350-1.html
但是这种做法实际上在服务器上没有分批次操作,他只是简单的flush和javascript更新,对服务器资源占用是持续的。
看到dedecms的进度条有点意思,顺便扒下来备用。

多的不说,缩减为一个文件,保存为.php后运行即可!

PHP代码
  1. <?php  
  2. /** 
  3.  * 进度条
  4.  *  
  5.  */  
  6.   
  7. function ExecTime()  
  8. {  
  9.     $time = explode(" ", microtime());  
  10.     $usec = (double)$time[0];  
  11.     $sec = (double)$time[1];  
  12.     return $sec + $usec;  
  13. }  
  14.   
  15. function ShowMsg($msg, $gourl, $onlymsg = 0, $limittime = 0) {  
  16.     if (empty ( $GLOBALS ['cfg_phpurl'] )) {  
  17.         $GLOBALS ['cfg_phpurl'] = '..';  
  18.     }  
  19.     $htmlhead = "<html><head><title>系统提示信息</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\" />";  
  20.     $htmlhead .= "<base target='_self'/><style>div{line-}</style></head><body leftmargin='0' topmargin='0'><center><script>";  
  21.     $htmlfoot = "</script></center></body></html>";  
  22.       
  23.     if ($limittime == 0) {  
  24.         $litime = 1000;  
  25.     } else {  
  26.         $litime = $limittime;  
  27.     }  
  28.       
  29.     if ($gourl == "-1") {  
  30.         if ($limittime == 0) {  
  31.             $litime = 5000;  
  32.         }  
  33.         $gourl = "javascript:history.go(-1);";  
  34.     }  
  35.       
  36.     if ($gourl == '' || $onlymsg == 1) {  
  37.         $msg = "<script>alert(\"" . str_replace ( "\"", "“", $msg ) . "\");</script>";  
  38.     } else {  
  39.         $func = "      var pgo=0; 
  40.       function JumpUrl(){ 
  41.         if(pgo==0){ location='$gourl'; pgo=1; } 
  42.       }";  
  43.         $rmsg = $func;  
  44.         $rmsg .= "document.write(\"<br /><div style='width:450px;padding:0px;border:1px solid #D1DDAA;'>";  
  45.         $rmsg .= "<div style='padding:6px;font-size:12px;border-bottom:1px solid #D1DDAA;background:#DBEEBD url({$GLOBALS['cfg_phpurl']}/img/wbg.gif)';'><b>系统提示信息!</b></div>\");";  
  46.         $rmsg .= "document.write(\"<div style='font-size:10pt;background:#ffffff'><br />\");";  
  47.         $rmsg .= "document.write(\"" . str_replace ( "\"", "“", $msg ) . "\");";  
  48.         $rmsg .= "document.write(\"";  
  49.         if ($onlymsg == 0) {  
  50.             if ($gourl != "javascript:;" && $gourl != "") {  
  51.                 $rmsg .= "<br /><a href='{$gourl}'>如果你的浏览器没反应,请点击这里...</a>";  
  52.             }  
  53.             $rmsg .= "<br/></div>\");";  
  54.             if ($gourl != "javascript:;" && $gourl != '') { 
  55.                 $rmsg .= "setTimeout('JumpUrl()',$litime);"; 
  56.             } 
  57.         } else { 
  58.             $rmsg .= "<br/><br/></div>\");"; 
  59.         } 
  60.         $msg = $htmlhead . $rmsg . $htmlfoot; 
  61.     } 
  62.     echo $msg; 
  63. $est1 = ExecTime(); 
  64. foreach ($_GET as $k => $v) { 
  65.     $$k=$v; 
  66. $startid  = (empty($startid)  ? 0  : $startid);//开始数量 
  67. $endid    = (empty($endid)    ? 0  : $endid);//结束数量 
  68. $pagesize = (empty($pagesize) ? 1 : $pagesize);//每次执行条数 
  69. $totalnum = (empty($totalnum) ? 0  : $totalnum);//总数量 
  70. $seltime  = (empty($seltime)  ? 0  : $seltime); 
  71. $stime    = (empty($stime)    ? '' : $stime ); 
  72. $etime    = (empty($etime)    ? '' : $etime); 
  73. $sstime   = (empty($sstime)   ? 0  : $sstime);  
  74. $successnum  = (empty($successnum)  ? 0  : $successnum);//成功数量 
  75. //处理业务逻辑 
  76. if ($totalnum==0) $totalnum=100; 
  77. //空转1000000次  爽吧?!! 
  78. for ($i = 0; $i < 1000000; $i++) {      
  79.     //请在这里执行发送代码 
  80. }    
  81. $startid=$startid+$pagesize; 
  82. $successnum++; 
  83. if(empty($sstime)) { 
  84.     $sstime = time(); 
  85. }   
  86.    
  87. $t2 = ExecTime(); 
  88. $t2 = ($t2 - $est1); 
  89. $ttime = time() - $sstime; 
  90. $ttime = number_format(($ttime / 60),2); 
  91. //返回提示信息 
  92. $tjlen = $totalnum>0 ? ceil( ($startid/$totalnum) * 100 ) : 100;//当前进度 
  93. $dvlen = $tjlen * 4; 
  94. $tjsta = "<div style='width:400;border:1px solid #898989;text-align:left'><div style='width:$dvlen;background-color:#829D83'></div></div>";  
  95. $tjsta .= "<br/>本次用时:".number_format($t2,2).",总用时:$ttime 分钟,总任务:".($totalnum).",到达位置:".($startid)."<br/>完成创建文件总数的:$tjlen %,继续执行任务...";  
  96. //$tjsta .= "<br/>";  
  97. //$tjsta .= "<br/>本次执行的任务表述";  
  98.   
  99. if($startid < $totalnum)  
  100. {  
  101.     $nurl  = "?endid=$endid&startid=$startid";  
  102.     $nurl .= "&totalnum=$totalnum&pagesize=$pagesize";  
  103.     $nurl .= "&seltime=$seltime&sstime=$sstime&stime=".urlencode($stime)."&etime=".urlencode($etime)."&successnum=$successnum&mkvalue=$mkvalue";  
  104.     ShowMsg($tjsta,$nurl,0,1000);  
  105.     exit();  
  106. }  
  107. else  
  108. {  
  109.     ShowMsg("完成所有任务!,生成发送:$successnum 总用时:{$ttime} 分钟。","javascript:;");  
  110. }  
  111.   
  112. ?>  

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载