CLI で実行されている php スクリプトがあり、現在の進捗率を表示したいので、STDOUT を更新して新しい割合を表示できるかどうか疑問に思っていました。
rewind() または fseek() を使用すると、エラー メッセージがスローされます。
CLI で実行されている php スクリプトがあり、現在の進捗率を表示したいので、STDOUT を更新して新しい割合を表示できるかどうか疑問に思っていました。
rewind() または fseek() を使用すると、エラー メッセージがスローされます。
このコードを参照してください:
<?php
echo "1";
echo chr(8);
echo "2";
「chr(8)」は「バックスペース」の文字であるため、出力は 2 のみです。
したがって、戻って新しいパーセンテージを出力するために必要な文字数を出力するだけです。
「\r」の印刷は Linux と Windows でも機能しますが、Mac ではうまくいきません。
作業例:
echo "Done: ";
$string = "";
for($i = 0; $i < 100; ++$i) {
echo str_repeat(chr(8), strlen($string));
$string = $i."%";
echo $string;
sleep(1);
}
出力\r
してからフラッシュして、現在の行の最初の列に戻ります。
出力ラスターを逆方向に移動したり、色を追加したりする場合、コンソール/端末への書き込みは驚くほど複雑です。動作は、使用しているコンソール/端末の種類によって異なります。ずっと前に、端末の抽象的な表現を構築し、それに書き込むというアイデアを思いついた人もいました。
PHP でこれを行う方法の詳細については、この記事を参照してください。