você está aqui: Home  → Arquivo de Mensagens Programação Shell Linux: Inscrições Abertas

Barra de Progresso para scripts em PHP

Colaboração: José de Lima Junior

Data de Publicação: 04 de Outubro de 2009

Como PHP pode ser utilizado em linha de comando e os scripts podem demorar a terminar o processamento, em certos momentos, faz-se necessário mostrar ao usuário como está o andamento da execução do script.

O código em PHP abaixo, implementa uma barra de progresso que pode auxiliar visualmente a demonstração do andamento do processamento do script.

Note que o funcionamento deste script deve-se, principalmente, ao "\r" no comando printf. Portanto, nada impede que esta funcionalidade seja implementada em outras linguagens de script, com por exemplo shell script.

<?php

$maximo = 10000;
$colunas = 90;

$progresso = new BarraProgresso($maximo);
$progresso->setColunas($colunas);

for ($i = 0; $i <= $maximo ; $i++)
{
      $progresso->mostrar($i);
}

echo "\n";

class BarraProgresso
{
      private  $colunas;
      private  $limite;

      function __construct($limite)
      {
              $this->limite = $limite;
              $this->setColunas(80);
      }

      public function setColunas($colunas)
      {
              $this->colunas = $colunas - 22;
      }

      public function mostrar($valor)
      {
              $percentual = (int)(($valor/$this->limite)*100);
              $barra = (int)($percentual * ($this->colunas/100));
              $mascara = "\r[%-" . $this->colunas . "s] %d%% (%2d/%2d)";
              printf($mascara, str_repeat("=", $barra). ">", $percentual, $valor, $this->limite);
      }
}

?>
José de Lima Junior é analista de sistemas. Mais informações no site http://www.jr.eti.br


Veja a relação completa dos artigos de José de Lima Junior