1

我有几个大小超过30MB.

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

4

2 回答 2

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);
?>
于 2010-09-09T07:47:09.123 回答
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);
于 2010-09-09T07:44:27.660 回答