Ищу STDOUT в PHP - PullRequest
       23

Ищу STDOUT в PHP

8 голосов
/ 05 марта 2010

У меня есть скрипт php, который выполняется в CLI, и я хочу отобразить текущий процент выполнения, поэтому мне было интересно, можно ли обновить STDOUT для отображения нового процента.

Когда я использую перемотку() или fseek () просто выдает сообщение об ошибке.

Ответы [ 3 ]

8 голосов
/ 05 марта 2010

См. Этот код:

<?php
echo "1";
echo chr(8);
echo "2";

Выход составляет только 2, поскольку "chr (8)" является символом для "возврата".

Так что просто напечатайте количество символов, необходимое для возврата, и напечатайте новый процент.

Печать "\ 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);
}
4 голосов
/ 05 марта 2010

Выведите \r и затем очистите, чтобы вернуться к первому столбцу текущей строки.

0 голосов
/ 05 марта 2010

Запись на консоль / терминал удивительно сложна, если вы хотите переместиться назад в выходном растре или сделать что-то вроде добавления цветов - и поведение будет варьироваться в зависимости от типа консоли / терминала, который вы используете.Давным-давно некоторые люди предлагали создать абстрактное представление терминала и писать в него.

См. эту статью , чтобы узнать, как это сделать в PHP.

...