PHP快速獲取文件行數


轉自:https://www.cnblogs.com/quixon/p/4684898.html

 

提供兩種實現方法,但是第一種效率最好

第一種:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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>" //此處設一個計時器 結束時間
 
?>

 查看一下網頁顯示結果:

連一秒都不到。可以看出這樣的效率還是蠻高的。

 

第二種:

1
2
3
4
5
6
7
8
9
10
<?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語句

第一種方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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>" //此處設一個計時器 結束時間
 
?>

 得到結果:

 

第二種方法:

1
2
3
4
5
6
7
8
9
10
11
12
<?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>" //此處設一個計時器 結束時間
?>

 

得到結果:

 

這種方法測試的可以明顯看出來,還是第一種方法要好的多。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM