Поиск STDOUT в PHP

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

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

8
задан instigator 5 March 2010 в 14:59
поделиться

3 ответа

Смотрите этот код:

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

Вывод только 2, так как "chr(8)" - это символ для "backspace".

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

Печать "\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);
}
8
ответ дан 5 December 2019 в 15:22
поделиться

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

4
ответ дан 5 December 2019 в 15:22
поделиться

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

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

-1
ответ дан 5 December 2019 в 15:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: