大块读取文件,怪异的循环

php_nub_qq

好吧,所以我试图读取一个91kb的文件,以1048576字节单位(1 MB),应该以一个块的形式即时读取文件,但是这不是我要的

public function uploadTmpFileFromXHRStream(){
    header('Content-type: text/html; charset=utf-8');
    function output($val)
    {
        echo $val;
        flush();
        ob_flush();
    }

    $in = fopen('php://input', 'r');
    $tmpFileId = uniqid(null,true);
    $out = fopen($tmpFileId.'_'.$_SERVER['HTTP_X_MFXHRFILEUPLOAD'], 'x');
    while($data = fread($in,1048576)){
        fwrite($out, $data);
        output(1);
        sleep(2);
    }

}

另一方面,我设置了javascript以在xhr.readystatechange监听readyState==3,只需将输出记录到控制台即可。我在控制台中拥有的是:

200 OK 24,02s   
1
11
111
1111
11111
111111
1111111
11111111
111111111
1111111111
11111111111
111111111111

循环中有12次迭代while,确切的文件大小php://input为93335。我很困惑,为什么会这样?

二进制炼金术士

php:// input是只读流。恐惧

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

php:// input是一个不代表纯文件的缓冲流。fread正在一次读取一个块(8192字节)。

文件大小/卡盘=读取周期数

93335/8192 = 11.4

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

大块读取文件,怪异的循环

来自分类Dev

大块读取二进制文件

来自分类Dev

Python读取大块文本

来自分类Dev

循环浏览大块列表

来自分类Dev

循环浏览大块列表

来自分类Dev

循环读取多个文件

来自分类Dev

无限循环读取文件

来自分类Dev

如何在Java中每次从不同的偏移量读取大块的String大文件?

来自分类Dev

如何从box-java-sdk中大块读取CSV文件内容

来自分类Dev

循环文件依赖降低了怪异性

来自分类Dev

读取将循环结束文件

来自分类Dev

循环读取多个大文件

来自分类Dev

并行处理循环读取文件

来自分类Dev

如何循环读取CSV文件?

来自分类Dev

PHP For 循环不读取文件

来自分类Dev

For循环读取文件名

来自分类Dev

是否可以使用pandas和/或pyreadstat读取大块SPSS文件,或者是否存在替代方法?

来自分类Dev

JavaScript中的怪异循环

来自分类Dev

python中怪异的循环?

来自分类Dev

使用while循环读取文件,在中间随机停止读取文件

来自分类Dev

我正在尝试读取文件并以%显示读取进度。我试过下面的代码,但无法分成大块显示进度

来自分类Dev

在python中读取文件并进行循环

来自分类Dev

在MATLAB中使用循环读取文件

来自分类Dev

无限循环读取文本文件

来自分类Dev

循环读取一些xlsx文件

来自分类Dev

从文件读取时出现无限循环问题

来自分类Dev

获取无限循环从方法读取文件时

来自分类Dev

C文件读取循环始终中断

来自分类Dev

在bat文件的for循环中读取变量