I have this example of how to use the Symfony progress bar helper
protected function execute(InputInterface $input, OutputInterface $output)
{
// Fake data source
$customers = [
['John Doe', '[email protected]', '1983-01-16'],
['Samantha Smith', '[email protected]', '1986-10-23'],
['Robert Black', '[email protected]', '1978-11-18'],
];
// Progress Bar Helper
$progress = new
\Symfony\Component\Console\Helper\ProgressBar($output,
count($customers));
$progress->start();
for ($i = 1; $i <= count($customers); $i++) {
sleep(5);
$progress->advance();
}
$progress->finish();
// Table Helper
$table = new \Symfony\Component\Console\Helper\Table($output);
$table->setHeaders(['Name', 'Email', 'DON'])
->setRows($customers)
->render();
}
Now, in the above example I gave, I was able to know in advance the total number of customers that will be export by using count(customers) as the 2nd argument of the progress bar.
Now, am creating a script that needed to download remote file which I have no idea how long it will take or the steps it will take before download will be complete.
My question is how can I create such script if I don't know in advance the number of steps that will be taking before hand?
NB: All examples I saw here and other places rarely(if at all) mention that
If you don't know the exact number of steps in advance, set it to a reasonable value and then call the setMaxSteps() method to update it as needed:
$progressBar = new ProgressBar($output, 50);
// a complex task has just been created: increase the progressbar to 200 units
$progressBar->setMaxSteps(200);
Or
$progressBar = new ProgressBar($output);
The progress will then be displayed as a throbber
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With