最大变量8192

时间:2017-07-13 02:06:47

标签: php size fread

所以我这里有一个从套接字读取输出的函数。

$content=$this->tsread(256);

function tsread($size,$timeout=1)
{
    global $handle;
    $start=microtime(true);
    do
    {
        usleep($size*10);
        $data=fread($handle,1);
        $info=stream_get_meta_data($handle);
    }
    while ((microtime(true)-$start)<$timeout and $info['timed_out']);
    do
    {
        usleep($size*10);
        if ($info['unread_bytes']>$size)
        {
            $data.=fread($handle,$size);
        }
        else
        {
            $data.=fread($handle,$info['unread_bytes']);
        }            
        $info=stream_get_meta_data($handle);
    }
    while ($info['unread_bytes']>0);
    return $data;
}

通常,这会成功读取输出,但最近套接字的输出已经变大,而且函数并没有成功读取它。

当我做strlen($ data)时,我得到一个8192的值。

是否有最大可变大小?或者函数中是否存在将$ data的长度限制为8192的内容?

1 个答案:

答案 0 :(得分:0)

  

如果流被读缓冲并且它不代表普通文件,   最多一次读取最多等于块大小的字节数   (通常是8192);取决于先前缓冲的数据,   返回数据的大小可能大于块    size