php如何高效的讀取大文件


通常來說在php讀取大文件的時候,我們采用的方法一般是一行行來講取,而不是一次性把文件全部寫入內存中,這樣會導致php程序卡死,下面就給大家介紹這樣一個例子。

需求:有一個800M的日志文件,大約有500多萬行, 用PHP返回最后幾行的內容。

實現方法:

<?php
/**
 * * * 取文件最后$n行 *
 * 
 * @param string $filename 文件路徑 *
 * @param int $n 最后幾行 *
 * @return mixed false表示有錯誤,成功則返回字符串
 *  作者: http://www.manongjc.com
 */
function FileLastLines($filename, $n){
  if(!$fp = fopen($filename, 'r')){
    echo "打開文件失敗,請檢查文件路徑是否正確,路徑和文件名不要包含中文";
    return false;
    }
  $pos = -2;
  $eof = "";
  $str = "";
  while($n > 0){
    while($eof != "n"){
      if(!fseek($fp, $pos, SEEK_END)){
        $eof = fgetc($fp);
        $pos--;
        }else{
        break;
        }
      }
    $str .= fgets($fp);
    $eof = "";
    $n--;
    }
  return $str;
  }
echo nl2br(FileLastLines('log.txt', 4));
?>

 


免責聲明!

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



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