Мне нужно прочитать поток ввода через 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
Благодарю.
Это зависит от того, что это за ресурс. Вы можете использовать функцию
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 () не возвращает данных, это означает, что они недоступны или еще не были отправлены.
Других решений пока нет …