中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php 中怎么使用fseek函數讀取大文件

發布時間:2021-07-14 15:59:17 來源:億速云 閱讀:148 作者:Leah 欄目:開發技術

這篇文章給大家介紹php 中怎么使用fseek函數讀取大文件,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

方法一:

首先通過fseek找到文件的最后一位EOF,然后找最后一行的起始位置,取這一行的數據,再找次一行的起始位置,再取這一行的位置,依次類推,直到找到了$num行。實現代碼如下:

整個代碼執行完成耗時 0.0095 (s)

function tail($fp,$n,$base=5)
{
  assert($n>0);
  $pos = $n+1;
  $lines = array();
  while(count($lines)< =$n){
    try{
      fseek($fp,-$pos,SEEK_END);
    } catch (Exception $e){
      fseek(0);
      break;
    }
    $pos *= $base;
    while(!feof($fp)){
      array_unshift($lines,fgets($fp));
    }
  }
  return array_slice($lines,0,$n);
}
var_dump(tail(fopen("access.log","r+"),10));

 方法二 :

還是采用fseek的方式從文件最后開始讀,但這時不是一位一位的讀,而是一塊一塊的讀,每讀一塊數據時,就將讀取后的數據放在一個buf里,然后通過換行符(n)的個數來判斷是否已經讀完最后$num行數據.實現代碼如下

整個代碼執行完成耗時 0.0009(s).

$fp = fopen($file, "r");
$line = 10;
$pos = -2;
$t = " ";
$data = "";
while ($line > 0) {
  while ($t != "n") {
    fseek($fp, $pos, SEEK_END);
    $t = fgetc($fp);
    $pos --;
  }
  $t = " ";
  $data .= fgets($fp);
  $line --;
}
fclose ($fp);
echo $data

關于php 中怎么使用fseek函數讀取大文件就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

铜陵市| 寿光市| 社旗县| 尼玛县| 黄平县| 遂平县| 汽车| 吉木乃县| 鄢陵县| 鄂托克旗| 德保县| 临江市| 奉节县| 万荣县| 木兰县| 墨玉县| 平阴县| 永胜县| 台安县| 横峰县| 玉门市| 稻城县| 同心县| 察哈| 泾阳县| 合作市| 博乐市| 澄城县| 盐源县| 郎溪县| 社会| 六枝特区| 通化县| 武山县| 东平县| 姜堰市| 新乐市| 金乡县| 庆元县| 北流市| 南京市|