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有这个答案吗?如果你有另外一个问题,如何处理这个问题,用整个代码问另一个问题,你正在使用的类和/或框架