我想要做這樣的事情:讀線從STDIN
$ [mysql query that produces many lines] | php parse_STDIN.php
在parse_STDIN.php
文件我希望能夠通過線從標準輸入解析我的數據線。
我想要做這樣的事情:讀線從STDIN
$ [mysql query that produces many lines] | php parse_STDIN.php
在parse_STDIN.php
文件我希望能夠通過線從標準輸入解析我的數據線。
你也可以使用一個發生器 - 如果你不知道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
}
您可以在此處詳細瞭解發生器(或谷歌搜索教程): http://php.net/manual/en/language.generators.overview.php
如果STDIN中的某行將爲空或「0」,該怎麼辦? – luchaninov 2016-09-27 11:30:36
由於'fgets()'將換行符保留在最後(「\ n」),所以直到EOF纔會發生。 – MatsLindh 2017-07-26 13:48:36
您是否嘗試過從PHP腳本中調用該查詢?你知道mysqli_query(「SELECT'many_lines' FROM'big_table'」);?這樣,你不必傳遞任何參數或任何東西。 PHP是用於Web服務器的腳本語言。如果您想要真正的處理解決方案,請使用編程語言,如C. – ATaylor 2012-08-15 11:11:27
首先:爲什麼?爲什麼不直接在PHP腳本中運行查詢?其次:'while(!feof(STDIN)){$ line = fgets(STDIN); do_stuff($線); }' – DaveRandom 2012-08-15 11:13:00
您應該瞭解PHP手冊中的* Commandline Usage *部分:[Input/output streams](http://php.net/manual/features.commandline.io-streams.php) – hakre 2012-08-15 11:22:46