За последние 24 часа нас посетили 20703 программиста и 1008 роботов. Сейчас ищет 351 программист ...

Перенос каретки при вызове внешнего скрипта

Тема в разделе "Прочие вопросы по PHP", создана пользователем igro, 5 сен 2021.

  1. igro

    igro Новичок

    С нами с:
    5 сен 2021
    Сообщения:
    3
    Симпатии:
    0
    Добрый день!
    Существует базовый скрипт,
    Код (Text):
    1. <?php
    2. echo "Запуск внешнего скрипта";
    3. system("php progress.php");
    который запускает внешнюю программу
    Код (Text):
    1. <?php
    2. echo "Внешний скрипт";
    3. for ($i=0;$i<4;$i++){
    4. echo $i."\n"; #Если использовать \r, вывод будет только последней строки
    5. sleep (1);
    6. }
    и выводит результаты выполнения в режиме лога консоль.
    Код (Text):
    1. Внешний скрипт
    2. 0
    3. 1
    4. 2
    5. 3
    Можно ли как-то во внешнем скрипте использовать перенос каретки (\r), для того чтобы основной скрипт выводил только текущую строку вывода, а не в режиме лога?
    Спасибо!
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.748
    Симпатии:
    1.321
    Адрес:
    Лень
  3. igro

    igro Новичок

    С нами с:
    5 сен 2021
    Сообщения:
    3
    Симпатии:
    0
    В nix это аналог \n, и system() получает строку вывода, только при получении \n.
    Может иными путями это можно обойти в основном скрипте?


    Код (Text):
    1. PHP_EOL может в себе содержать только два значения либо \r\n для windows платформ либо \n для остальных
    --- Добавлено ---
    Пока приходит в голову только использовать вывод потока внешней программы в файл(>), а в скриптом этот файл парсить и уже возвращать каретку через \r
    Но по мне - это костыль.
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    похоже на попытку консольной программы на php, типа чтоб в одной строке показывало текущий прогресс например или / | \ крутил как спинер?
     
  5. igro

    igro Новичок

    С нами с:
    5 сен 2021
    Сообщения:
    3
    Симпатии:
    0
    Да, именно это. Вызов внешнего скрипта как пример. Пытаюсь обработать результаты работы другой консольной программы, не забивая полностью лог основной.
     
  6. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    Есть готовая библиотека, позволяющая произвольное позиционирование, изменение цвета и прочее, вот название хоть убей не помню... Что то типа console... На Хабре даже статья была по использованию... Или посмотреть что используется в ларавеле, там для консольных команд, тоже что то такое используется
     
    don.bidon нравится это.