Как читать поток STDIO в переполнении стека

Мне нужно прочитать поток ввода через PHP.

Ответ ОБЪЕКТ:

Serial Object
(
[_device] => \.\com4
[_windevice] => COM4
[_dHandle] => Resource id #23
[_dState] => 2
[_buffer] =>
[_os] => windows
[autoflush] => 1
)

Мне нужно извлечь информацию из [_dHandle] => Идентификатор ресурса № 23. Я извлек метаданные

stream_get_meta_data($serial->_dHandle)

и нашел следующее:

Array
(
[wrapper_type] => plainfile
[stream_type] => STDIO
[mode] => r+b
[unread_bytes] => 0
[seekable] => 1
[uri] => \.\com4
[timed_out] =>
[blocked] => 1
[eof] =>
)

Пожалуйста, предложите мне, как я могу извлечь данные из этого идентификатора ресурса: # 23

Благодарю.

1

Решение

Это зависит от того, что это за ресурс. Вы можете использовать функцию

get_resource_type () на _dHandle, а затем зависит от типа ресурса, используйте соответствующую функцию для его чтения.

Если это поток, то вы можете использовать fopen, fread и т. Д., Если это mysql, то использовать функцию mysql, если это xml, то использовать функции чтения xml и т. Д.

Измените свой код с

Это плохое изменение кода

$stdin = fopen('php://stdin', 'r');
$res = stream_get_contents($stdin, -1, 10);`

в

$stream = fopen($serial->_dHandle, 'r');
echo stream_get_contents($stream, -1, 10);
fclose($stream);

Если $ stream имеет значение false, то его нельзя открыть, если у него есть указатель, то это означает, что соединение открыто. Затем, если stream_get_contents () не возвращает данных, это означает, что они недоступны или еще не были отправлены.

0

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

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

По вопросам рекламы [email protected]