一般來講在php讀取大文件的時候,咱們採用的方法通常是一行行來說取,而不是一次性把文件所有寫入內存中,這樣會致使php程序卡死,下面就給你們介紹這樣一個例子。php
需求:有一個800M的日誌文件,大約有500多萬行, 用PHP返回最後幾行的內容。spa
實現方法:日誌
<?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)); ?>