最新寫了個小程式,需要讀取乙個檔案的幾行內容,但是檔案比較大,所以研究了下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...