PHP如何高效获取大文件(1G以上)行数

答案

一次读取一部分数据,计算这部分数据中有多少个换行符,不断循环,效率会比顺序读取内容高。

  1. function countLine($file)
  2. {
  3. $fp = fopen($file, 'r');
  4. $i = 0;
  5. while (!feof($fp)) {
  6. //每次读取2M
  7. if ($data = fread($fp, 1024 * 1024 * 2)) {
  8. //计算读取到的行数
  9. $num = substr_count($data, "\n");
  10. $i += $num;
  11. }
  12. }
  13. fclose($fp);
  14. return $i;
  15. }