首页 > 解决方案 > 进度条在块中更新,而不是每次更改

问题描述

我有一个工作进度条,用于跟踪在调用 Rscript 时创建的图表的创建进度。虽然我在每次 Rscript 调用后“更新”进度条,但进度条以 10 到 15 个单位为一组移动,而不是一次移动 1 个。每次通话后我都尝试了“flush()”,但没有帮助。有没有办法让进度条按照我想要的方式运行?这是代码片段:

<div id="bars" align="center">
  <div align="left" id="progress" style="width:500px;border:1px solid  #0066cc;"></div>
  <!-- Progress information -->
  <div id="information" align="center" style="width"></div>        
</div>

<?PHP
$mid=0 ;
$lastone=250 ;
$i=1 ;
while ($i <=$lastone){
  $fname='test'.$i ;
  $cmdline='Rscript R/testscript.R' ;
  exec ($cmdline) ;
  $mid ++ ;
  // update progress bar
  $percent=$mid/$lastone*100 ;
  $percent=intval($mid/$lastone *100)."%" ;
   echo '<script language="javascript">
       document.getElementById("progress").innerHTML="
       <div style=\"width:'.$percent.';background-color:#0066CC;\">&nbsp;
   </div>";
   document.getElementById("information").innerHTML="'.$mid.' Graphs processed.";
</script>'; 
flush() ;          
$i ++ ;

}

标签: javascriptphp

解决方案


可能您启用了输出缓冲。因此调用flush只是发送等待输出数据但不刷新输出缓冲区本身。

尝试在每个之前添加ob_flush()flush()


推荐阅读