PHP Classes

File: lib/Multiotp/contrib/MultiotpShowStatus.php

Recommend this page to a friend!
  Classes of Cyril Ogana   PHP User Credentials   lib/Multiotp/contrib/MultiotpShowStatus.php   Download  
File: lib/Multiotp/contrib/MultiotpShowStatus.php
Role: Auxiliary script
Content type: text/plain
Description: Auxiliary script
Class: PHP User Credentials
Implement password authentication policies
Author: By
Last change:
Date: 5 years ago
Size: 3,489 bytes
 

Contents

Class file image Download
<?php

/*********************************************************************
 *
 * Name: MultiotpShowStatus
 * Short description: Show a progress status bar in the console
 *
 * Creation 2010
 * Source: http://brian.moonspot.net/status_bar.php.txt
 * @author Copyright (c) 2010, dealnews.com, Inc. - All rights reserved.
 *
 * Adapted 2010-2014 by SysCo/al
 *
 * @param int $done how many items are completed
 * @param int $total how many items are to be done total
 * @param int $size optional size of the status bar
 * @return void
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * - Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 * - Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * - Neither the name of dealnews.com, Inc. nor the names of its contributors
 * may be used to endorse or promote products derived from this software
 * without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 *
 * Usage
 *
 * for($x=1;$x<=100;$x++)
 * {
 * MultiotpShowStatus($x, 100);
 * usleep(100000);
 * }
 *
 * @param int $done how many items are completed
 * @param int $total how many items are to be done total
 * @param int $size optional size of the status bar
 * @return void
 *
 *********************************************************************/
function MultiotpShowStatus($done, $total, $size=30)
{

    static
$start_time;

   
// if we go over our bound, just ignore it
   
if($done > $total) return;

    if(empty(
$start_time)) $start_time=time();
   
$now = time();

   
$perc=(double)($done/$total);

   
$bar=floor($perc*$size);

   
$status_bar="\r[";
   
$status_bar.=str_repeat("=", $bar);
    if(
$bar<$size)
    {
       
$status_bar.=">";
       
// $status_bar.=str_repeat(" ", $size-$bar);
       
$status_bar.=str_repeat("-", $size-$bar);
    }
    else
    {
       
$status_bar.="=";
    }

   
$disp=number_format($perc*100, 0);

   
$status_bar.="] $disp% $done/$total";

   
$rate = ($now-$start_time)/$done;
   
$left = $total - $done;
   
$eta = round($rate * $left, 2);

   
$elapsed = $now - $start_time;

   
// $status_bar.= " remaining: ".number_format($eta)." sec. elapsed: ".number_format($elapsed)." sec.";

   
echo "$status_bar ";

   
flush();

   
// when done, send a newline
   
if($done == $total)
    {
        echo
"\n";
    }
}

?>