zoukankan      html  css  js  c++  java
  • php+javascript动态显示服务器运行程序的进度条

    原文链接:http://www.blogguy.cn/show-350-1.html

    经常有这样的业务要处理,服务器上有较多的业务需要处理,需要分批操作,于是就需要一个提示客户现在完成进度的进度条。

    这个是php+javascript的进度条。

     

    <?php  
    //set_time_limit(0);        //注意,如果是安全模式,请不要打开,如果不是安全模式,这个选项可以打开  
    for ($i = 0; $i < 500; $i++) {    
       $users[] = 'Tom_' . $i;  
    }   //end for  
    $width = 500;                       //显示的进度条长度,单位 px  
    $total = count($users);             //总共需要操作的记录数  
    $pix = $width / $total;             //每条记录的操作所占的进度条单位长度  
    $progress = 0;                      //当前进度条长度  
    ?>  
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/transitional.dtd">  
    <html>  
    <head>  
        <title>动态显示服务器运行程序的进度条</title>  
        <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
        <style>  
        body, div input { font-family: Tahoma; font-size: 9pt }  
        </style>  
        <script language="JavaScript">  
        <!--  
        function updateProgress(sMsg, iWidth)  
        {    
            document.getElementById("status").innerHTML = sMsg;  
            document.getElementById("progress").style.width = iWidth + "px";  
            document.getElementById("percent").innerHTML = parseInt(iWidth / <?php echo $width; ?> * 100) + "%";  
         }  
        //-->  
        </script>       
    </head>  
      
    <body>  
    <div style="margin: 4px; padding: 8px; border: 1px solid gray; background: #EAEAEA;  <?php echo $width+8; ?>px">  
        <div><font color="gray">如下进度条的动态效果由服务器端 PHP 程序结合客户端 JavaScript 程序生成。</font></div>  
        <div style="padding: 0; background-color: white; border: 1px solid navy;  <?php echo $width; ?>px">  
        <div id="progress" style="padding: 0; background-color: #FFCC66; border: 0;  0px; text-align: center;   height: 16px"></div>              
        </div>  
        <div id="status"> </div>  
        <div id="percent" style="position: relative; top: -30px; text-align: center; font-weight: bold; font-size: 8pt">0%</div>  
    </div>  
    <?php  
    flush();    //将输出发送给客户端浏览器  
    foreach ($users as $user) {    
        //      在此处使用空循环模拟较为耗时的操作,实际应用中需将其替换;  
        //      如果你的操作不耗时,我想你就没必要使用这个脚本了 :)  
        //      请在这里处理你的业务  
       for ($i = 0; $i < 1000000; $i++) {    
            ;;  
         }  
    ?>  
    <script language="JavaScript">  
        updateProgress("正在操作用户“<?php echo $user; ?>” ....", <?php echo min($width, intval($progress)); ?>);  
    </script>  
    <?php  
       flush();    //将输出发送给客户端浏览器,使其可以立即执行服务器端输出的 JavaScript 程序。  
       $progress += $pix;       
    }   //end foreach  
    //   最后将进度条设置成最大值 $width,同时显示操作完成  
    ?>  
    <script language="JavaScript">  
        updateProgress("操作完成!", <?php echo $width; ?>);  
    </script>  
    <?php  
    flush();  
    ?>  
    </body>  
    </html>  

    效果如下:

  • 相关阅读:
    scrapy中selenium的应用
    Django的锁和事务
    redis
    【leetcode】187. Repeated DNA Sequences
    【leetcode】688. Knight Probability in Chessboard
    【leetcode】576. Out of Boundary Paths
    【leetcode】947. Most Stones Removed with Same Row or Column
    【leetcode】948. Bag of Tokens
    【leetcode】946. Validate Stack Sequences
    【leetcode】945. Minimum Increment to Make Array Unique
  • 原文地址:https://www.cnblogs.com/hubery/p/3086563.html
Copyright © 2011-2022 走看看