Pregressbar на php для Cli



Давно хотелось сделать что-то, что помогало бы отслеживать процент выполнения задачи в cli. Как раз сегодня с утра приятель и коллега burik666 случайно дал мне вектор, дав код крутяшки:

1
$ php -r '$a="\|/-"; while (true){ for ($i=0; $i<4;$i++){echo "\r",$a[$i].$a[3-$i]; usleep(100000); } }'

Я собственно тут же знал как это дело применить, так как давно хожу с идеей прогресс бара для cli в голове.
Долго думать не пришлось, состряпал на 5 минут сие творение:

1
2
3
4
5
6
7
8
9
function progress($percVal)
{
    echo "\rProgress: |".str_pad(str_repeat('-', $percVal / 2), 50, ' ',STR_PAD_RIGHT)."| {$percVal}%";
}
for($i = 1; $i < 100; $i++)
{
    progress($i);
    usleep(100000);
}

Код до ужаса прост, надо только знать стандартные строковые функции php.

Вся магия в «\r» – он собственно возвращает каретку в начало строки

К сожалению похожих по тематике статей пока нет.

Ответить


[ Ctrl + Enter ]