fread变量最大8192

问题描述:

所以我在这里是一个读取套接字输出的函数。fread变量最大8192

$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($的数据),我得到的8192

的值是否有一个最大可变大小?或者在函数中有什么限制$ data的长度为8192?

如果流读缓冲,并它并不代表一个纯文本文件, 至多可达数量等于块大小 (通常8192)由字节之一读取;取决于先前缓冲的数据,则 大小返回的数据可以比 size

+0

我设定块大小为256与'tsread(256)的块大;'和'$数据=的fread(。 $ handle,$ size);'对吗? – codexo10Z

+0

@ codexo10Z有这个答案你的问题?如果你有另外一个如何处理这个问题,请用整个代码问他另一个问题,他使用的是他的类和/或框架 – user10089632