通常我们需要读取一些日志文件,但有时日志很大,有时记录的时间很长,我们只想看最新的最近的记录,这就需要从最后几行读取。这个函数就比较有用了。
<?php
/**
* 取文件最后$n行
* @param string $file 文件路径
* @param int $line 最后几行
* @return mixed 成功则返回字符串
*/
function getLastLines($file,$line=1){
if(!$fp=fopen($file,'r')){
echo "打开文件失败";
return false;
}
$pos = -2;//偏移量
$eof = " ";//行尾标识
$data = "";
while ($line > 0){//逐行遍历
while ($eof != "\n"){ //不是行尾
fseek($fp, $pos, SEEK_END);//fseek成功返回0,失败返回-1
$eof = fgetc($fp);//读取一个字符并赋给行尾标识
$pos--;//向前偏移
}
$eof = " ";
$data .= fgets($fp);//读取一行
$line--;
}
fclose($fp);
return $data;
}
//测试代码
print_r(getLastLines("access.log",5));exit;
评论 (0)