PHP从套接字获取可用字节

PHP从套接字获取可用字节,php,sockets,Php,Sockets,所以我一直在写这个工具,我正在使用这些(不是),与之不同的是,我猜测第二个工具使用的是严格基于流的套接字。问题是你不能在我使用的插座上使用 除了从fsockopen()返回的流是一个围绕常规套接字的托管包装器之外,还有其他方法可以获取可用字节的数量吗?;未读字节(这可能是您想要的)是套接字上的read()(由包装器本身生成)和包装器上的fread()(由脚本生成)之间的差异 包装器读取8192字节的数据块,但是fread()或fgets()可能无法一次读取所有数据,这就是为什么可以查询未读元数据

所以我一直在写这个工具,我正在使用这些(不是),与之不同的是,我猜测第二个工具使用的是严格基于流的套接字。问题是你不能在我使用的插座上使用


除了从
fsockopen()
返回的流是一个围绕常规套接字的托管包装器之外,还有其他方法可以获取可用字节的数量吗?

;未读字节(这可能是您想要的)是套接字上的
read()
(由包装器本身生成)和包装器上的
fread()
(由脚本生成)之间的差异

包装器读取8192字节的数据块,但是
fread()
fgets()
可能无法一次读取所有数据,这就是为什么可以查询
未读
元数据字段的原因;这是否有用是另一回事;-)

使用常规套接字时,您可以:

  • 使用
    socket\u select()
    等待数据可用,然后使用适当大的
    socket\u read()
  • 使用
    socket\u set\u nonblock()