Я пытаюсь создать индикатор выполнения в ремесленной команде. Используемая мной версия laravel — 5.0 (хотя она была обновлена с 4.x, поэтому команды хранятся в папке app / Console / Commands и находятся в пространстве имен Foundry \ PhoneHome \ Console \ Commands)
я бегу $this->output->progressStart($count);
и также пытался $this->output->createProgressBar($count);
но для них обоих я получаю ошибку [Symfony\Component\Debug\Exception\FatalErrorException] Call to undefined method Symfony\Component\Console\Output\ConsoleOutput::progressStart()
Я делаю что-то не так или индикаторы не поддерживаются в laravel 5.0?
Индикаторы прогресса были введены в Laravel 5.1, вы можете обновить свой Laravel (рекомендуется) или написать простой индикатор прогресса самостоятельно.
Внутри вашей команды добавьте следующую функцию:
private function updateProgress($done, $total) {
$perc = floor(($done / $total) * 50);
$left = 50 - $perc;
$write = sprintf("\033[0G\033[2K[%'={$perc}s>%-{$left}s] - $perc%% - $done/$total", "", "");
fwrite(STDERR, $write);
}
public function handle() {
// your logic
$this->updateProgress(1,10);
}
Вы можете увидеть больше реализаций здесь Индикатор выполнения командной строки в PHP
Других решений пока нет …