Подтвердить что ты не робот

Чтение строки за строкой из STDIN

Я хочу сделать что-то вроде этого:

$ [mysql query that produces many lines] | php parse_STDIN.php

В parse_STDIN.php файле я хочу иметь возможность анализировать мои данные по строкам из stdin.

4b9b3361

Ответ 1

используйте STDIN константу в качестве обработчика файлов.

while($f = fgets(STDIN)){
    echo "line: $f";
}

Примечание: fgets в STDIN читает символ \n.

Ответ 2

Вы также можете использовать генератор - если вы не знаете, насколько большой будет STDIN.

Требуется PHP 5 >= 5.5.0, PHP 7

Что-то по строкам:

function stdin_stream()
{
    while ($line = fgets(STDIN)) {
        yield $line;
    }
}

foreach (stdin_stream() as $line) {
    // do something with the contents coming in from STDIN
}

Здесь вы можете узнать больше об генераторах (или в Google для поиска учебников): http://php.net/manual/en/language.generators.overview.php