Скрипт для отображения процесса выполнения задачи в консоли.

28.09.2017

пример того, как используя псевдографику можно вывести на экран консоли информацию о стадии выполнения той или иной задачи.

pic1

 
<?php
  
  function progressBar($current=0, $total = 100, $size = 50)
  {
    // first call must have $current=0,
    // otherwise you'll delete some last
    // part of your's app output
    
    $sText = ' '.$current.' / '.$total;

    // percent indicator must be four characters, if shorter, add some spaces
    $perc = ($current/$total)*100;
    for($i=strlen($perc); $i<=4; $i++)
    {
      $perc = ' '.$perc;
	}

    $total_size = $size + $i + 3 + strlen($sText);

    // if it's not first go, remove the previous bar
    if($current > 0)
    {
      for($place = $total_size; $place > 0; $place--)
      {
        // echo a backspace (hex:08) to remove the previous character
        echo "\x08";
      }
    }

    // output the progess bar as it should be
    for($place = 0; $place <= $size; $place++)
    {
      // output green spaces if we're finished through this point
      // or grey spaces if not
      if($place <= ($current / $total * $size))
      {
        echo '\033[42m \033[0m';
	  }
	  else
	  {
        echo '\033[47m \033[0m';
	  }

    }

    echo $sText;
  }

  
  
  
  for($x=1;$x<=100;$x++)
  {
    progressBar($x);
    usleep(100000);
  }
  
  echo "\n";


Пометки: cli, консоль, прогресс бар
Яндекс.Метрика