Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

325
Vistas
Symfony/Console: ¿Cómo usar varias barras de progreso?

Tengo un comando para Symfony/Console que descarga varios archivos a la vez usando Guzzle Pool . Ya tengo a Guzzle informando el progreso de la descarga de cada archivo, eso funciona bien.

Ahora me gustaría mejorarlo usando el asistente ProgressBar de Symfony/Console. El problema es que todos los ejemplos que encontré para ProgressBar solo usan una única barra de progreso. Necesito varias barras de progreso independientes, una para cada una de las descargas. ¿Puedes darme alguna pista de cómo lograr eso?

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Encontré algo aquí: [Consola] Una mejor barra de progreso #10356

 use Symfony\Component\Console\Helper\ProgressBar; use Symfony\Component\Console\Output\ConsoleOutput; $output = new ConsoleOutput(); $bar1 = new ProgressBar($output, 10); $bar2 = new ProgressBar($output, 20); $bar2->setProgressCharacter('#'); $bar1->start(); print "\n"; $bar2->start(); for ($i = 1; $i <= 20; $i++) { // up one line $output->write("\033[1A"); usleep(100000); if ($i <= 10) { $bar1->advance(); } print "\n"; $bar2->advance(); }

Efecto:

Barra de progreso

Debe mover el cursor de la consola a la línea adecuada (arriba y abajo) antes de actualizar la barra. Pero funciona. Confirmo.

about 4 years ago · Santiago Trujillo Denunciar

0

Con Symfony 4.1 esto es compatible sin el control manual del cursor, consulte https://symfony.com/doc/current/components/console/helpers/progressbar.html#console-multiple-progress-bars :

 $section1 = $output->section(); $section2 = $output->section(); $progress1 = new ProgressBar($section1); $progress2 = new ProgressBar($section2); $progress1->start(100); $progress2->start(100); $i = 0; while (++$i < 100) { $progress1->advance(); if ($i % 2 === 0) { $progress2->advance(4); } usleep(50000); }
about 4 years ago · Santiago Trujillo Denunciar

0

Laravel 5.6 / linux

 use Symfony\Component\Console\Helper\ProgressBar; use Symfony\Component\Console\Output\ConsoleOutput; $output = new ConsoleOutput(); $bar1 = new ProgressBar($output->section(), 10); $bar2 = new ProgressBar($output->section(), 20); $bar2->setProgressCharacter('#'); $bar1->start(); print "\n"; $bar2->start(); for ($i = 1; $i <= 20; $i++) { // up one line $output->write("\033[1A"); usleep(100000); if ($i <= 10) { $bar1->advance(); } print "\n"; $bar2->advance(); }
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda