在PHP中处理大型文本文件?

3

我需要扫描一个30MB的文本文件,这是一个世界城市列表。我该如何访问这个文件?我觉得使用File_Get_Contents会让我的服务器崩溃。


1
请参见http://stackoverflow.com/questions/4822165/php-read-large-text-file-log。 - Paul DelRe
30MB并不算很大。我之前用PHP处理过4GB的文件。这是可能的... - ircmaxell
1
你是否真的尝试过 file_get_contents 呢? - Marcel Korpel
3个回答

7

只需使用fopen打开它,然后使用fgets


1

文件系统函数在这种情况下非常方便。

例子

$filename = "your_file_path";

// to open file
$fp = fopen($filename, 'r'); // use 'rw' to open file in read/write mode

// to output entire file
echo fread($fp, filesize($filename));

// to close file
fclose($fp);

参考资料

(一些有用的函数)


0
<?php
$fh = @fopen("inputfile.txt", "r");
if ($fh) {
    while (($line = fgets($fh)) !== false) {
        echo $line;
        // do something with $line..
    }
    fclose($fh);
}
?>

更多有关 http://pt.php.net/manual/zh/function.fgets.php 的信息/示例


2
又是一个情况,其中'@'运算符不仅无用,甚至有害 ;) - Strae
值得一提的是:**@** 运算符将禁用任何错误报告,即使是严重的错误,如文件未找到、权限等,这可能会使调试过程变得困难。此外,补充的 else 也可能会派上用场。 - jsmp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接