você está aqui: Home  → Arquivo de Mensagens

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

Opinião dos Leitores

Alex
04 Fev 2012, 22:10
Eu utilizei o código mas ele repete a porcentagem toda a tela, não faz um reflesh do progresso.
Ehinarr
03 Ago 2010, 01:26
Muito interessante, só que não consegui implementar.. A classe deve ficar em arquivo separado?
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script