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

Posted

技术标签:

【中文标题】PHP fwrite() 用于将大字符串写入文件【英文标题】:PHP fwrite() for writing a large string to file 【发布时间】:2016-02-03 17:11:38 【问题描述】:

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

fwrite($file, $content);

问题是:不是整个字符串都写入文件,并且限制在特定的限制范围内。

fwrite 总是返回 7933594

【问题讨论】:

【参考方案1】:

是的,fwrite 函数有长度限制,对于大文件,您可以将文件拆分成更小的部分,如下所示:

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

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

    fclose($file);

【讨论】:

【参考方案2】:

@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"

是解决办法。

【讨论】:

以上是关于PHP fwrite() 用于将大字符串写入文件的主要内容,如果未能解决你的问题,请参考以下文章

linux下php fwrite无法写入文件怎么回事呀

php fwrite() 没有完成将字符串数据写入文件,为啥?

php: 怎么让写入的字符串自动换行(在文本里面)?用fwrite()写入

PHP中文件操作-- 写文件

fwrite(php)并不总是写

php怎样将一个字符串写入txt文件 ,注意:前提是不能冲掉txt文件中的值