PHP 讀取大檔案的X行到Y行的內容

2022-03-17 09:02:40 字數 681 閱讀 8683

最新寫了個小程式,需要讀取乙個檔案的幾行內容,但是檔案比較大,所以研究了下php讀取大檔案的幾行內容的方法,寫了乙個方法,**如下(加了注釋):

//返回檔案從x行到y行的內容(支援php5、php4)

function getfilelines($filename, $startline = 1, $endline=50, $method='rb')

}else{//php<5.1

$fp = fopen($filename, $method);

if(!$fp) return 'error:can not read file';

for ($i=1;$i

ps:上面都沒加"讀取到末尾的判斷":!$fp->eof() 或者 !feof($fp),加上這個判斷影響效率,自己加上測試很多很多很多行的執行時間就曉得了,而且這裡加上也完全沒必要。

從上面的函式就可以看出來使用splfileobject比下面的fgets要快多了,特別是檔案行數非常多、並且要取後面的內容的時候。fgets要兩個迴圈才可以,並且要迴圈$endline次。

此方法花了不少功夫,測試了很多中寫法,就是想得出效率最高的方法。哪位覺得有值得改進的歡迎賜教。

使用,返回35270行-35280行的內容:

echo '';var_dump(getfilelines('test.php',35270,35280))

PHP隨機讀取大檔案中的若干行

我們在日常的工作中,經常會遇到用php操作大檔案,比如需要分析系統日誌等問題,有的日誌檔案可能很大,幾個g以上,如果用file和file get contents函式的話,就會產生問題,由於這兩個函式是一次性將檔案內容載入到記憶體中,而有時候php本身或機器記憶體的限制,往往就會產生記憶體的溢位。下...

php讀取大檔案的方法

1 使用file 函式直接讀取 starttime microtime float ini set memory limit 1 file testfile.txt data file file line count data 總行數 lastline data count data 1 最後一行 ...

python讀取csv檔案(一行一行的讀取)

在python裡面,讀取或寫入csv檔案時,首先要import csv這個庫,然後利用這個庫提供的方法進行對檔案的讀寫。1 獲取每一行 讀取csv檔案,用的是csv.reader 這個方法。返回結果是乙個 csv.reader的物件,我們可以對這個物件進行遍歷,輸出每一行,某一行,或某一列。如下 1...