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