【问题标题】:PHP and jQuery progress bar while parsing解析时的 PHP 和 jQuery 进度条
【发布时间】:2013-09-05 03:47:34
【问题描述】:

我想知道如何制作一个用于解析 HTML 数据的进度条。本质上,用户搜索了一些东西,然后我解析了另一个网站。我尝试通过获取在数组中找到的对象数量然后将 100 除以它,然后在 for 循环中获取当前对象并将其乘以 100/total 来做到这一点。然后我会用这个值更新一个文本文件。然后使用该值更新进度条。但是,我想要一种更有效的方法来做到这一点。此外,它必须对每个用户都是唯一的。谢谢。

【问题讨论】:

    标签: php javascript jquery ajax progress-bar


    【解决方案1】:

    我找到了另一种方法,这是为了帮助所有有相同问题的人。我在这里找到了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;\">&nbsp;</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>
    ?>
    

    【讨论】:

      【解决方案2】:

      执行长度 php 进程同时显示进度,甚至在同一页面上有多个进度条pre/post hookshttp://pastebin.com/KSxjC01r

      我是为自己做的,因为我需要它。

      请随意使用。

      【讨论】:

      • 链接出现错误 404
      【解决方案3】:

      如果您在解析部分使用 PHP,那么这意味着您应该以某种方式从该过程中获取信息。这也意味着您必须(可能)向另一个监视第一个脚本或至少从中获取一些日志信息的 php 脚本发出 ajax 请求。我不认为 PHP 是正确的选择。我会建议使用nodejs。在那里,您可以实现实时套接字通信,这很容易。

      【讨论】:

      • 嗯,解析过程是用PHP构建的。使用类 simple_html_dom
      • 在 PHP 中你不能访问已经启动的脚本。在其执行期间,您只能以编程方式将标记留在数据库或文件中。然后你可以用另一个 php 脚本来阅读它们,但这听起来很糟糕。一般来说,您有 javascript API 用于获取有关文件上传的信息,但不适用于脚本执行。
      • 所以你说在 PHP while 循环中写入文件不是一个好主意?
      • 是的。您不应该依赖文件写入。即使您为不同的用户使用不同的文件,这也会使您的网站非常繁重。也会减慢整个过程。
      • 好的,写入 cookie 怎么样?
      【解决方案4】:

      我使用了 user3393366 在上面的帖子中提出的解决方案,虽然它输出的 JavaScript 代码量很丑,但它运行得非常好。我修改它以根据完成百分比显示多色进度条,修复页面问题上的多进度条,为进度条添加标题,并在完成功能时选择隐藏进度条.. 所以,不需要 jquery 或 ajax,并且效果很好..非常愿意在这里发布我的模组..当然,也许不是最先进的东西..但可以完成工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-19
        • 2014-12-27
        • 1970-01-01
        • 2012-04-29
        • 2011-12-21
        • 1970-01-01
        相关资源
        最近更新 更多