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() 用于将大字符串写入文件的主要内容,如果未能解决你的问题,请参考以下文章
php fwrite() 没有完成将字符串数据写入文件,为啥?