Читать STDIN построчно в переполнении стека

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

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

Решение

Работает как положено. Вы делаете только один fgets() так вот что ты получишь. Документы читать:

Чтение заканчивается, когда длина — 1 байт были прочитаны, или перевод строки (который
включается в возвращаемое значение) или EOF (в зависимости от того, что наступит раньше)

Если вы хотите прочитать больше, вам нужно выполнить цикл:

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

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector