我正在考虑如何为解析HTML数据创建进度条。基本上,用户搜索某些内容,然后我会解析另一个网站。我尝试通过获取数组中找到的对象数量,然后将100除以它并在for循环中获取当前对象并将其乘以100/总数来实现。然后我将使用该值更新文本文件。然后使用该值更新进度条。但是,我希望有更有效的方法来实现它。而且它必须对每个用户都是唯一的。谢谢。
我正在考虑如何为解析HTML数据创建进度条。基本上,用户搜索某些内容,然后我会解析另一个网站。我尝试通过获取数组中找到的对象数量,然后将100除以它并在for循环中获取当前对象并将其乘以100/总数来实现。然后我将使用该值更新文本文件。然后使用该值更新进度条。但是,我希望有更有效的方法来实现它。而且它必须对每个用户都是唯一的。谢谢。
我发现了另一种方法来解决这个问题,我想分享给所有有同样疑问的人。我在这里找到了它:http://w3shaman.com/article/php-progress-bar-script
<?php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
<title>Progress Bar</title>
</head>
<body>
<!-- Progress bar holder -->
<div id="progress" style="width:500px;border:1px solid #ccc;"></div>
<!-- Progress information -->
<div id="information" style="width"></div>
<?php
// Total processes
$total = 10;
// Loop through process
for($i=1; $i<=$total; $i++){
// Calculate the percentation
$percent = intval($i/$total * 100)."%";
// Javascript for updating the progress bar and information
echo '<script language="javascript">
document.getElementById("progress").innerHTML="<div style=\"width:'.$percent.';background-color:#ddd;\"> </div>";
document.getElementById("information").innerHTML="'.$i.' row(s) processed.";
</script>';
// This is for the buffer achieve the minimum size in order to flush data
echo str_repeat(' ',1024*64);
// Send output to browser immediately
flush();
// Sleep one second so we can see the delay
sleep(1);
}
// Tell user that the process is completed
echo '<script language="javascript">document.getElementById("information").innerHTML="Process completed"</script>';
?>
</body>
</html>
?>
如果你使用PHP来进行解析部分,那么这意味着你应该从该过程中获取信息。这也意味着你必须(可能)向另一个监视第一个脚本的PHP脚本发出ajax请求,或者至少从中获取一些日志信息。我不认为PHP是正确的选择。我建议使用Node.js。在那里,你可以实现实时套接字通信,这种方式相当容易。
我使用了用户user3393366在上面的帖子中提出的解决方案,尽管它输出了大量丑陋的JavaScript代码,但它运行得非常好。我对其进行了修改,以根据完成百分比输出多彩进度条,解决了页面上多个进度条的问题,为进度条添加了标题,并添加了可选的隐藏进度条完成功能...因此,不需要jQuery或ajax,而且效果很好...非常愿意在这里发布我的修改内容...当然,也许不是最前沿的东西...但能够完成工作。