+ -
当前位置:首页 → 问答吧 → php实现shell的tail,读取文本倒数$n行

php实现shell的tail,读取文本倒数$n行

时间:2008-06-05

来源:互联网

如果文件超级大,比如我们公司的日访问日志就接近10G,如果要分析这些日志的时候用PHP的file来分析就超级闷,甚至可能机器直接down了,当然如果你会shell那就非常方便了,shell的tail非常方便,我只是用PHP实现了tail的功能
复制PHP内容到剪贴板
PHP代码:
/**
* 读取文本倒数$n行
*
* @param string $filename
* @param int $n $n不能大于10
* @return array
*/
function tail($filename,$n)
{
    $fp = fopen($filename, 'rb');
    $n = (int)$n;
    if($n>10) trigger_error("取文件倒数N行的时候,不能大于10行", E_USER_ERROR);
    if ($fp) {
        flock($fp, LOCK_SH);
        $i = -2;//从第二个字符开始,因为最后一个是"\n"
        fseek($fp,$i,SEEK_END);
        $buffer = array();
        while ($n>=0) {
         fseek($fp,$i--,SEEK_END);
   if(fgetc($fp)=="\n") {
    $buffer[] = fgets($fp,1024);
    $n--;
   }
        }
        flock($fp, LOCK_UN);
        fclose($fp);
        unset($tmp);
        return $buffer;
    } else {
        return false;
    }
}

有什么问题欢迎到我博客拍砖,交流~ ,肯定有更好的解决方案,如果有希望能贡献出来,小弟虚心讨教

[ 本帖最后由 edwardhey 于 2008-6-5 14:57 编辑 ]

作者: edwardhey   发布时间: 2008-06-05

作者: luzhou   发布时间: 2008-06-05

热门下载

更多