voglio fare qualcosa di simile:linea di lettura per riga da STDIN
$ [mysql query that produces many lines] | php parse_STDIN.php
In parse_STDIN.php
lima voglio essere in grado di analizzare la mia linea di dati per riga da stdin.
voglio fare qualcosa di simile:linea di lettura per riga da STDIN
$ [mysql query that produces many lines] | php parse_STDIN.php
In parse_STDIN.php
lima voglio essere in grado di analizzare la mia linea di dati per riga da stdin.
utilizzare STDIN
costante come gestore file.
while($f = fgets(STDIN)){
echo "line: $f";
}
Nota: fgets su STDIN legge il carattere \n
.
È anche possibile utilizzare un generatore, se non si sa quanto grande sarà lo STDIN.
richiede PHP 5> = 5.5.0, PHP 7
Qualcosa sulla falsariga di:
function stdin_stream()
{
while ($line = fgets(STDIN)) {
yield $line;
}
}
foreach (stdin_stream() as $line) {
// do something with the contents coming in from STDIN
}
Si può leggere di più su generatori qui (o una ricerca su Google per tutorial): http://php.net/manual/en/language.generators.overview.php
e se una riga in STDIN fosse vuota o' "0" '? – luchaninov
Poiché 'fgets()' mantiene la fine riga alla fine ("\ n"), ciò non accadrà fino a EOF. – MatsLindh
Hai provato a chiamare quella query dallo script PHP? Conosci mysqli_query ("SELECT' many_lines' FROM 'big_table'") ;? In questo modo, non devi passare argomenti o altro. PHP è un linguaggio di script usato per i server web. Se si desidera una soluzione di elaborazione reale, utilizzare un linguaggio di programmazione come C. – ATaylor
Innanzitutto: perché? Perché non eseguire la query solo nello script PHP? Secondo: 'while (! Feof (STDIN)) {$ line = fgets (STDIN); do_stuff ($ line); } ' – DaveRandom
Dovresti conoscere la sezione * Uso della riga di comando * nel manuale PHP: [Input/output streams] (http://php.net/manual/features.commandline.io-streams.php) – hakre