用于将大字符串写入文件的PHP fwrite()

时间:2015-11-03 13:58:42

标签: php fwrite large-files

我必须在文件中写一个大字符串 10MB ,我正在使用这一行来实现:

fwrite($file, $content);

问题是:不是整个字符串都写入文件,而是限制在特定限制内。

fwrite 始终返回7933594

2 个答案:

答案 0 :(得分:10)

是的,fwrite函数仅限于长度,对于大文件,您可以将文件拆分为较小的部分,如下所示:

    $file   = fopen("file.json", "w");

    $pieces = str_split($content, 1024 * 4);
    foreach ($pieces as $piece) {
        fwrite($file, $piece, strlen($piece));
    }

    fclose($file);

答案 1 :(得分:1)

@Ayman Alkom解决方案的替代方式。

function fwrite_stream($fp, $string) {
    for ($written = 0; $written < strlen($string); $written += $fwrite) {
        $fwrite = fwrite($fp, substr($string, $written));
        if ($fwrite === false) {
            return $written;
        }
    }
    return $written;
}

这应该会有更好的表现。

但是如果您使用此代码复制一个大文件,

Linux命令

"cat file1.txt file2.txt > file.txt" 

窗口命令

"copy file1.txt+file1.txt file.txt"

是溶液吗?