在PHP中逐行读取STDIN

时间:2017-05-05 08:42:43

标签: php

我想做这样的事情:

1,abc,100
2,xyz,200
3,uyx,300
4,sje,400
5,tek,500

如果我将此输入传递给PHP,它将读取第一行并立即关闭流。我想读/写所有行和流应该一直打开。几乎就像使用超时流一样。

我的代码段如下:

<?php
$rk = new RdKafka\Producer();
$rk->setLogLevel(LOG_DEBUG);
$rk->addBrokers("localhost:9092");
$topic = $rk->newTopic("testing");
$temp = fopen("php://stdin","r");
$line = fgets($temp);
$foo = rtrim($line);
$topic->produce(RD_KAFKA_PARTITION_UA,0,$foo);

1 个答案:

答案 0 :(得分:0)

它按预期工作。你只做一个fgets()所以这就是你将得到的。 Docs read

  

读取长度 - 读取1个字节或换行时(或   包含在返回值中)或EOF(以先到者为准)

如果你想阅读更多内容,你需要循环:

while (!feof($temp)) { 
    $line = rtrim(fgets($temp));
    $topic->produce(RD_KAFKA_PARTITION_UA, 0, $line);
}