夏期劇*_*期劇場 0 php memory file file-get-contents fread
我即将阅读一个200Mb的文本文件,然后在里面编辑一些东西,然后将其保存回来.但我有错误.所以:
另外哪种文件读取方法最适合打开和解析Big Sized文件?我的意思是:
我不得不做类似的事情,阅读1GB文件.我想留在PHP中,所以最后我用fread来读取文件的一部分,一点一滴:
while (!feof($source_file)) {
$buffer = fread($source_file, 1024); // use a buffer of 1024 bytes
$buffer = str_replace($old,$new,$buffer);
fwrite($target_file, $buffer);
}
Run Code Online (Sandbox Code Playgroud)
这样,在任何给定时间,只有一小部分文件保存在内存中.我已经检查了效率并且它很好,整个文件大约半分钟.
一个小注释 - 如果被替换的字符串位于缓冲区的末尾,则可能不会被替换.要确保您已更改所有出现次数,请使用较小的偏移量再次运行脚本:
$buffer = fread($source_file, 512);
fwrite($target_file, $buffer);
while (!feof($source_file)) {
$buffer = fread($source_file, 1024); // use a buffer of 1024 bytes
$buffer = str_replace($old,$new,$buffer);
fwrite($target_file, $buffer);
}
Run Code Online (Sandbox Code Playgroud)