2017年2月6日月曜日

Laravel5.4のコンソールでプログレスバー(Progress Bars)

Laravel5.4コンソールでプログレスバー(Progress Bars)です。これ面白い。プロフェッショナルな仕上がりになります(笑)。

実際に表示されるプログレスバー(Progress Bars)
 28/200 [===>------------------------]  14% 3 secs/21 secs 10.0 MiB
155/200 [=====================>------]  77% 16 secs/21 secs 10.0 MiB
200/200 [============================] 100% 20 secs/20 secs 10.0 MiB
/app/Console/Commands/MyTestCommand.php
  public function handle()
  {
    $users = User::all(['name', 'email'])->toArray();

    // プログレスバー
    $bar = $this->output->createProgressBar(count($users));

    // プログレスバーのフォーマット
    $bar->setFormat(' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s% %memory:6s%');

    // 処理前の表示
    $bar->setEmptyBarCharacter('-');

    // 処理後の表示
    $bar->setBarCharacter('=');

    // 処理中の表示
    $bar->setProgressCharacter(">");

    // テーブルのヘッダ
    $headers = ['Name', 'Email'];

    foreach ($users as $user) {
      usleep(10000);
      // 実際の処理
      // $this->performTask($user);
      $bar->advance();
    }

    print "\n" ;

    // テーブル描画
    $this->table($headers, $users);

    $bar->finish();
    print "\n" ;

  }

参考サイト
Artisan Console(Laravel)
Progress Bar (Symfony)
Laravelでコマンドラインアプリケーションを作成する(Qiita)
Fun with Symfony's Console Component(KnpUniversityさん)
Laravel5.4でコマンド作成(Writing Commands)

0 件のコメント:

コメントを投稿