今回は、ターミナル上で処理を実行したときに、処理がどのぐらい進んでいるか見えるようにする方法を記します。
何かをインストールするときにどのぐらいインストールが完了したか表示されますよね。今回は、それをつくっていきます。
![]()
完成は、上記の画像の通りです。
処理が進むとハッシュ「#」が増える仕組みで、右側の数字が、
全体のうちどのぐらい進んだかを数字で表示しています。
では、コードを貼ります。
<?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との違いはマイクロ秒単位で実行できるかできないかです。
以上です。ありがとうございました。






コメント