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

时间:2010-09-09 07:41:15

标签: php file file-io fread

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

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

2 个答案:

答案 0 :(得分:6)

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

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

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

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

答案 1 :(得分:3)

您可以使用fopen打开文件,使用fgets读取行。

$fh = fopen("file", "r");  // open file to read.

while (!feof($fh)) { // loop till lines are left in the input file.
        $buffer = fgets($fh); //  read input file line by line.
        .....
        }       
}       

fclose($fh);