2

のようなユーティリティwgetは、ダウンロード率をコンソールに書き込み、新しい行を書き込まずに更新を続けることができます。この機能は何と呼ばれ、Symfonyのコンソールコンポーネントで可能ですか?

4

2 に答える 2

3

1ed の回答を使用して、Symfony が 2.2 で利用可能な進行状況ヘルパーを使用してそれを行う方法を確認しました。16 進文字コード "\x08" (ANSI バックスペース文字) は、1 文字を削除します。最後の行の長さを追跡し、str_repeat を使用すると、目的の効果が得られます。

コンセプトの証明:

<?php
$lastLineSize = 0;

for ($i = 0; $i <= 50; $i++) {
    echo str_repeat("\x08", $lastLineSize);
    echo "Iteration {$i} of 50";
    $lastLineSize = strlen("Iteration {$i} of 50");
    usleep(100000);
}

echo " - Done\n";

出力:

[root@dev /home/myuser] > php test.php
Iteration 50 of 50 - Done
[root@dev /home/myuser] >
于 2012-11-18T23:33:35.423 に答える
2

master ブランチを使用している場合は、進捗ヘルパー( docs ) を使用できます。

于 2012-11-15T23:34:25.203 に答える