[Console] Add support for resuming a ProgressBar #46242
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add an
(int) $resumeAt
argument forProgressBar#start()
, so that the progress bar is initialized at a specific progress level, with a new property so thatgetEstimated()
andgetRemaining()
report the right number.As pointed out on a recently posted SO question), when working on a longish task one may want to create a progress bar for a resumed task.
Calling
advance()
works to increase the progress bar counter, but the results ofgetRemaining()
andgetEstimated()
will be "broken", since whatever steps one "skipped" will be considered to have taken 0 seconds. For a longer running task, the estimation will be very inaccurate, and will remain so for a long while. Using the example code from the linked question:This will output this to begin with:
The estimated time will keep growing as the tasks progresses, but the estimation won't be remotely useful for a long while.
This PR adds a
$resumeAt
parameter toProgresBar#start()
, so that's possible to write:And calls to
$bar->getEstimated()
and$bar->getRemaining()
will return sane results (and calling the initial->advance()
would be no longer necessary).TODO: