【PHP】ターミナル で処理の実行をカッコよく表示する方法!

今回は、ターミナル上で処理を実行したときに、処理がどのぐらい進んでいるか見えるようにする方法を記します。

何かをインストールするときにどのぐらいインストールが完了したか表示されますよね。今回は、それをつくっていきます。

完成は、上記の画像の通りです。
処理が進むとハッシュ「#」が増える仕組みで、右側の数字が、
全体のうちどのぐらい進んだかを数字で表示しています。

では、コードを貼ります。

<?php
 $cuiLength = 30;
 $processLength = 1080;
 $output = "";
 for($i = 1; $i <= $processLength; $i++){
  if($i%($processLength/$cuiLength) == 0){
   $output .= "#";
   echo $output." ".str_repeat(" ",$cuiLength - $i/($processLength/$cuiLength)).$i."/".$processLength."\r";
   usleep(50000);
  }
 }
 echo "\n";
?>

これで、

php index.php

とターミナル 上で実行してあげれば完成です。

$cuiLengthは、ハッシュ(#)の個数です。
$processLengthは、処理全体の数です。今回の場合は1080です。
そして、$cuiLength分出力されるようにif文で

$i%($processLength/$cuiLength) == 0

このように処理しています。

str_repeat(" ",$cuiLength - $i/($processLength/$cuiLength))

は、空白の数をハッシュの数と反比例させています。
これは、ハッシュの横側の数字が、ハッシュの数が増えるとともに移動するのを防ぐためです。

usleep(50000);

そして、今回は、処理が全くないため、usleepを使って遅延させています。
sleepとの違いはマイクロ秒単位で実行できるかできないかです。

以上です。ありがとうございました。

コメント

スポンサーリンク
スポンサーリンク
タイトルとURLをコピーしました