读取不超过8192字节

时间:2018-03-15 15:01:09

标签: php io stream php-7

我有一个奇怪的问题,fread拒绝读取超过8192个字节。我知道这是读取缓冲的远程流的预期行为,但这是由PHP脚本创建的本地.zip文件。

代码示例:

$fh = fopen('/path/to/file.zip', 'rb');
$data = fread($fh, 4194304); // 4 MB
echo strlen($data);

输出:8192

文件本身大小为9 mb。

如果我在CLI中运行它,它可以正常工作。

PHP版本为7.1。

我知道为什么会遇到这个问题?

1 个答案:

答案 0 :(得分:-1)

根据docs所做的事情:

  

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