PHP获取文件行数
提供两种实现方法,但是第一种效率最好
第一种:
<?php $file_path = 'test.txt'; //文件路径 此处找一个1094644行的TXT文件 test.txt $line = 0 ; //初始化行数 //打开文件 set_time_limit(0); echo "开始时间:".date("H:i:s")."</br>"; //此处设一个计时器 开始时间 $fp = fopen($file_path , 'r') or die("open file failure!"); if($fp){ //获取文件的一行内容,注意:需要php5才支持该函数; while(stream_get_line($fp,8192,"\n")){ $line++; } fclose($fp);//关闭文件 } //输出行数; echo $line."</br>"; echo "结束时间:".date("H:i:s")."</br>"; //此处设一个计时器 结束时间 ?>
查看一下网页显示结果:
连一秒都不到。可以看出这样的效率还是蛮高的。
第二种:
<?php $file_path = 'test.txt'; //文件路径 此处找一个1094644行的TXT文件 test.txt set_time_limit(0); echo "开始时间:".date("H:i:s")."</br>"; //此处设一个计时器 开始时间 $line = count(file($file_path)); //输出行数; echo $line."</br>"; echo "结束时间:".date("H:i:s")."</br>"; //此处设一个计时器 结束时间 ?>
查看一下网页显示结果:
好像也很快,也不到1秒钟。
下面我再用时间戳试一下:
修改一下PHP语句
第一种方法:
<?php $file_path = 'test.txt'; //文件路径 此处找一个1094644行的TXT文件 test.txt $line = 0 ; //初始化行数 //打开文件 set_time_limit(0); $start_time=microtime(true);//获取程序执行开始的时间 $fp = fopen($file_path , 'r') or die("open file failure!"); if($fp){ //获取文件的一行内容,注意:需要php5才支持该函数; while(stream_get_line($fp,8192,"\n")){ $line++; } fclose($fp);//关闭文件 } //输出行数; echo $line."</br>"; $end_time=microtime(true);//获取程序执行结束的时间 $elapse=$end_time-$start_time; //获取差值 echo "消耗时间".$elapse."</br>"; //此处设一个计时器 结束时间 ?>
得到结果:
第二种方法:
<?php $file_path = 'test.txt'; //文件路径 此处找一个1094644行的TXT文件 test.txt set_time_limit(0); $start_time=microtime(true);//获取程序执行开始的时间 $line = count(file($file_path)); //输出行数; echo $line."</br>"; $end_time=microtime(true);//获取程序执行结束的时间 $elapse=$end_time-$start_time; //获取差值 echo "消耗时间".$elapse."</br>"; //此处设一个计时器 结束时间 ?>
得到结果:
这种方法测试的可以明显看出来,还是第一种方法要好的多。