-
-
Notifications
You must be signed in to change notification settings - Fork 9.6k
added memory usage to console progress helper #9573
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
$memory = memory_get_usage(true); | ||
if ($memory>1024*1024*1024*10) { | ||
return sprintf('%.2fGB', $memory/1024/1024/1024); | ||
} elseif ($memory>1024*1024*10) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just use if
as the prevoous if
returns
👍 very good feature to detect memory leaks on long running process. |
👍 |
* | ||
* @return string | ||
*/ | ||
private function humaneMemory() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Typo: humanMemory
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
how about humanReadableMemory
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
or readableMemory
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just took the "name" from the method just below called "humaneTime"
👍 |
1 similar comment
👍 |
I would be nice to have this in 2.5, ping @fabpot |
@@ -76,6 +76,7 @@ class ProgressHelper extends Helper | |||
'bar', | |||
'percent', | |||
'elapsed', | |||
'memory' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Miss trailing comma.
could you please add a test? I am not sure if the elapsed feature was merged without tests also |
$memory = memory_get_usage(true); | ||
|
||
if ($memory > 1024*1024*1024*10) { | ||
return sprintf('%.2fGB', $memory/1024/1024/1024); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
more correct would be GiB
, MiB
, KiB
etc.
Closing in favor of #10356 |
This PR was merged into the 2.5-dev branch. Discussion ---------- [Console] A better progress bar | Q | A | ------------- | --- | Bug fix? | no | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | #9573, #9574, #10187, #9951, related to #9788 | License | MIT | Doc PR | symfony/symfony-docs#3626 TODO: - [x] add some docs See what this PR allows you to do easily:  ## New ProgressBar class First, this PR deprecates `ProgressHelper` in favor of `ProgressBar`. The main difference is that the new `ProgressBar` class represents a single progress bar, which allows for more than one bar to be displayed at a time: ```php 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(); } ``` And here is how it looks like when run:  ## Format Placeholders This pull request refactors the way placeholders in the progress bar are managed. It is now possible to add new placeholders or replace existing ones: ```php // set a new placeholder ProgressBar::setPlaceholderFormatterDefinition('remaining_steps', function (ProgressBar $bar) { return $bar->getMaxSteps() - $bar->getStep(); }); // change the behavior of an existing placeholder ProgressBar::setPlaceholderFormatterDefinition('max', function (ProgressBar $bar) { return $bar->getMaxSteps() ?: '~'; }); ``` Several new built-in placeholders have also been added: * `%remaining%`: Display the remaining time * `%estimated%`: Display the estimated time of the whole "task" * `%memory%`: Display the memory usage ## Formats Formats can also be added (or built-in ones modified): ```php ProgressBar::setFormatDefinition('simple', '%current%'); $bar->setFormat('simple'); // is equivalent to $bar->setFormat('%current%'); ``` Built-in formats are: * `quiet` * `normal` * `verbose` * `quiet_nomax` * `normal_nomax` * `verbose_nomax` ## Format Messages You can also set arbitrary messages that depends on the progression in the progress bar: ```php $bar = new ProgressBar($output, 10); $bar->setFormat("%message% %current%/%max% [%bar%]"); $bar->setMessage('started'); $bar->start(); $bar->setMessage('advancing'); $bar->advance(); $bar->setMessage('finish'); $bar->finish(); ``` You are not limited to a single message (`message` being just the default one): ```php $bar = new ProgressBar($output, 10); $bar->setFormat("%message% %current%/%max% [%bar%] %end%"); $bar->setMessage('started'); $bar->setMessage('', 'end'); $bar->start(); $bar->setMessage('advancing'); $bar->advance(); $bar->setMessage('finish'); $bar->setMessage('ended...', 'end'); $bar->finish(); ``` ## Multiline Formats A progress bar can now span more than one line: ```php $bar->setFormat("%current%/%max% [%bar%]\n%message%"); ``` ## Flexible Format Definitions The hardcoded formatting for some placeholders (like `%percent%` or `%elapsed%`) have been removed in favor of a `sprintf`-like format: ```php $bar->setFormat("%current%/%max% [%bar%] %percent:3s%"); ``` Notice the `%percent:3s%` placeholder. Here, `%3s` is going to be used when rendering the placeholder. ## ANSI colors and Emojis The new progress bar output can now contain ANSI colors and.or Emojis (see the small video at the top of this PR). Commits ------- 0d1a58c [Console] made formats even more flexible 8c0022b [Console] fixed progress bar when using ANSI colors and Emojis 38f7a6f [Console] fixed PHP comptability 244d3b8 [Console] added a way to globally add a progress bar format or modify a built-in one a9d47eb [Console] added a way to add a custom message on a progress bar 7a30e50 [Console] added support for multiline formats in ProgressBar 1aa7b8c [Console] added more default placeholder formatters for the progress bar 2a78a09 [Console] refactored the progress bar to allow placeholder to be extensible 4e76aa3 [Console] added ProgressBar (to replace the stateful ProgressHelper class)
Output will look like this