Php fread变量最大值为8192

Php fread变量最大值为8192,php,size,fread,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)

我这里有一个函数,它从套接字读取输出

$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;
}
$content=$this->tsread(256);
函数tsread($size,$timeout=1)
{
全球$handle;
$start=microtime(真);
做
{
usleep(尺寸*10美元);
$data=fread($handle,1);
$info=stream\u get\u meta\u data($handle);
}
while((microtime(true)-$start)$size)
{
$data.=fread($handle,$size);
}
其他的
{
$data.=fread($handle,$info['unread_bytes');
}            
$info=stream\u get\u meta\u data($handle);
}
而($info['unread_bytes']>0);
返回$data;
}
通常,这会成功地读取输出,但最近套接字的输出变大了,函数无法成功地读取所有输出

当我做strlen($data)时,我得到的值是8192

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

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


我使用
tsread(256)将块大小设置为256
$data.=fread($handle,$size)对吗?@codexo10Z有这个答案吗?如果你有另外一个问题,如何处理这个问题,用整个代码问另一个问题,你正在使用的类和/或框架