Reputation: 2823
I want to do something like this:
$ [mysql query that produces many lines] | php parse_STDIN.php
In parse_STDIN.php
file I want to be able to parse my data line by line from stdin.
Upvotes: 54
Views: 80076
Reputation: 325
You could also use a generator - if you don't know how large the STDIN is going to be.
Requires PHP 5 >= 5.5.0, PHP 7
Something along the lines of:
function stdin_stream()
{
while ($line = fgets(STDIN)) {
yield $line;
}
}
foreach (stdin_stream() as $line) {
// do something with the contents coming in from STDIN
}
You can read more about generators here (or a google search for tutorials): http://php.net/manual/en/language.generators.overview.php
Upvotes: 16
Reputation: 57640
use STDIN
constant as file handler.
while($f = fgets(STDIN)){
echo "line: $f";
}
Note: fgets on STDIN reads the \n
character.
Upvotes: 102