Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

328
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!