如何在PHP中阅读巨型文本文件?

Pra*_*dip 1 php file-io file fread

我的文本文件很少,大小超过30MB.

我如何从PHP中读取这些巨大的文本文件?

Pis*_*3.0 6

除非您需要在同一时刻处理所有数据,否则您可以将它们分片阅读.二进制文件示例:

<?php
$handle = fopen("/foo/bar/somefile", "rb");
$contents = '';
while (!feof($handle)) {
  $block = fread($handle, 8192);
  do_something_with_block($block);
}
fclose($handle);
?>
Run Code Online (Sandbox Code Playgroud)

上面的示例可能会破坏多字节编码(如果在8192字节边界内存在多字节字符 - 例如?在UTF-8中),那么对于具有有意义的最终行(例如文本)的文件,请尝试以下操作:

<?php
$handle = fopen("/foo/bar/somefile", "rb");
$contents = '';
while (!feof($handle)) {
  $line = fgets($handle);
  do_something_with_line($line);
}
fclose($handle);
?>
Run Code Online (Sandbox Code Playgroud)