方法一:用while循环逐行统计,效率太慢

  1. <?php
  2. $file_path = 'xxx.txt'; //文件路径
  3. $line = 0; //初始化行数
  4. //打开文件
  5. $fp = fopen($file_path, 'r') or die("open file failure!");
  6. if ($fp) {
  7. //获取文件的一行内容,注意:需要php5才支持该函数;
  8. while (stream_get_line($fp, 8192, "\n")) {
  9. $line++;
  10. }
  11. fclose($fp);//关闭文件
  12. }
  13. //输出行数;
  14. echo $line;
  15. ?>

方法二:使用file方法一次性读取,但不适用于大文件

  1. <?php
  2. $line = count(file('filename'));
  3. echo $line;
  4. ?>

方法三:多行统计,每次读取N个字节,然后再统计行数,效率较高

  1. <?php
  2. function count_line($file){
  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. }
  16. ?>

上面三种方法中,方法三较好!