使用 file($path) 计算大型文本文件中的行数可能会导致内存耗尽错误,如下所示整个文件被加载到内存中。为了解决这个问题,需要一种更高效、更节省内存的方法。
有效计数行数的一种方法是使用 fgets() 函数。通过一次一行读取和处理,可以避免将整个文件加载到内存中:
<code class="php">$file = "largefile.txt"; $linecount = 0; $handle = fopen($file, "r"); while (!feof($handle)) { $line = fgets($handle); $linecount++; } fclose($handle); echo $linecount;</code>
此代码打开文件进行读取,使用 fgets() 一次读取一行,递增行计数,并在到达文件末尾时终止。
另一种方法(对于可能包含很长行的文件特别有用)是计算行尾字符:
<code class="php">$file = "largefile.txt"; $linecount = 0; $handle = fopen($file, "r"); while (!feof($handle)) { $line = fgets($handle, 4096); $linecount += substr_count($line, PHP_EOL); } fclose($handle); echo $linecount;</code>
这里,substr_count() 用于计算读取的每个数据块中的换行符数量。
这两种方法使用的内存较少,因为它们增量处理行而不是将整个文件加载到内存中。
以上是如何有效计算大文本文件(200 MB)中的行数?的详细内容。更多信息请关注PHP中文网其他相关文章!