我需要通过PHP读取输入流。
响应对象:
Serial Object
(
[_device] => \.\com4
[_windevice] => COM4
[_dHandle] => Resource id #23
[_dState] => 2
[_buffer] =>
[_os] => windows
[autoflush] => 1
)
我需要从 [_ dHandle] =>中提取信息资源ID#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] =>
)
请建议我如何从该资源ID中提取数据:#23
感谢。
答案 0 :(得分:0)
这取决于它是什么类型的资源。你可以使用功能
_dHandle上的get_resource_type()然后依赖于资源类型使用适当的函数来读取它。
如果它是一个流然后你可以使用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()没有返回数据,则表示它不可用或尚未发送。