PHP 读取大文件并显示的简单实例(推荐)

 更新时间:2016年08月12日 10:54:26   投稿:jingxian  
下面小编就为大家带来一篇PHP 读取大文件并显示的简单实例(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

使用PHP读取日志文件,当文件比较大的时候,会报内存不足,因此应该部分读取,读取指定的行数的数据

PHP代码:

<?php
class Test{
  //日志路径
  const LOG_PATH="E:\phpServer\Apache\logs\error.log";
  const NGINX_LOG_PATH="E:\phpServer\\nginx\logs\error.log";
  //显示的行数
  const PAGES=50;
  public static function main(){
    header("content-type:text/html;charset=utf-8");
    
    if(!empty($_GET['action'])){
      self::$_GET['action']();
      exit;
    }
  }

  public static function showApacheLogs(){
    $test=new Test();
    $result=$test->readLogs(self::LOG_PATH,self::PAGES);
    $html="";
    foreach($result as $line){
      if(strpos($line,"error:")){
        $line="<font color='red'>".$line."</font>";
      }
      $html.="<div class='line'>".$line."<div>";
    }
    echo $html;
  }
  public static function showNginxLogs(){
    $test=new Test();
    $result=$test->readLogs(self::NGINX_LOG_PATH,self::PAGES);
    $html="";
    foreach($result as $line){
      if(strpos($line,"error")){
        $line="<font color='red'>".$line."</font>";
      }
      $html.="<div class='line'>".$line."<div>";
    }
    echo $html;
  }
  /**
  * 读取日志
  */
  private function readLogs($filePath,$num=20){
    $fp = fopen($filePath,"r");
    $pos = -2; 
    $eof = ""; 
    $head = false;  //当总行数小于Num时,判断是否到第一行了 
    $lines = array(); 
    while($num>0){ 
      while($eof != "\n"){ 
        if(fseek($fp, $pos, SEEK_END)==0){  //fseek成功返回0,失败返回-1 
          $eof = fgetc($fp); 
          $pos--; 
        }else{                //当到达第一行,行首时,设置$pos失败 
          fseek($fp,0,SEEK_SET); 
          $head = true;          //到达文件头部,开关打开 
          break; 
        } 
         
      } 
      array_unshift($lines,fgets($fp)); 
      if($head){ break; }         //这一句,只能放上一句后,因为到文件头后,把第一行读取出来再跳出整个循环 
      $eof = ""; 
      $num--; 
    } 
    fclose($fp); 
    return array_reverse($lines); 
  }
}
Test::main();
?>
<style type="text/css">
*{
  padding: 0;
  margin: 0;
}
.logsBox{
  margin:5px;
  padding: 5px;
  width: 600px;
  background: #000;
  color:#fff;
  font-size: 13px;
  float: left;
}
.logsBox .line{
  margin: 12px 0;
}
</style>
<div class="logsBox apache">
  <div class="line">日志读取...</div>
</div>
<div class="logsBox nginx">
  <div class="line">日志读取...</div>
</div>
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
  $(function(){

    function showLogs(api,showClass){
      function readLogs(){
        $.ajax({
          url:api,
          type:"get",
          dataType:"text",
          success:function(data){
            $(showClass).html(data);
          }
        });
      }
      readLogs();
      setInterval(readLogs,5000);
    }
    showLogs("?action=showNginxLogs",".nginx");
    showLogs("?action=showApacheLogs",".apache");
  });
</script>

以上这篇PHP 读取大文件并显示的简单实例(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • PHP AOP教程案例

    PHP AOP教程案例

    这篇文章主要介绍了PHP AOP教程案例,本篇文章通过简要的案例,讲解了AOP该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • php xml留言板 xml存储数据的简单例子

    php xml留言板 xml存储数据的简单例子

    php xml留言板 xml存储数据的简单例子 php操作xml的简单留言板,带分页,仅供参考
    2009-08-08
  • PHP模板引擎Smarty内置变量调解器用法详解

    PHP模板引擎Smarty内置变量调解器用法详解

    这篇文章主要介绍了PHP模板引擎Smarty内置变量调解器用法,结合实例形式详细分析了Smarty中的常用内置变量调节器定义与使用技巧,需要的朋友可以参考下
    2016-04-04
  • PHP用Session实现用户登陆功能

    PHP用Session实现用户登陆功能

    Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制。由于 Session 是以文本文件形式存储在服务器端的,所以不怕远程用户修改 Session 内容。这篇文章主要介绍了PHP用Session实现用户登陆功能,需要的朋友可以参考下
    2022-12-12
  • Laravel timestamps 设置为unix时间戳的方法

    Laravel timestamps 设置为unix时间戳的方法

    今天小编就为大家分享一篇Laravel timestamps 设置为unix时间戳的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • PHP中操作ini配置文件的方法

    PHP中操作ini配置文件的方法

    本篇文章介绍了,PHP中操作ini配置文件的方法。需要的朋友参考下
    2013-04-04
  • thinkPHP多表查询及分页功能实现方法示例

    thinkPHP多表查询及分页功能实现方法示例

    这篇文章主要介绍了thinkPHP多表查询及分页功能实现方法,结合具体实例形式分析了thinkPHP多表查询以及查询结果的分页显示相关实现技巧,需要的朋友可以参考下
    2017-07-07
  • Yii框架结合sphinx,Ajax实现搜索分页功能示例

    Yii框架结合sphinx,Ajax实现搜索分页功能示例

    这篇文章主要介绍了Yii框架结合sphinx,Ajax实现搜索分页功能,结合实例形式分析了Yii框架中使用sphinx与Ajax实现搜索结果的分页展示效果,需要的朋友可以参考下
    2016-10-10
  • smarty内置函数section的用法

    smarty内置函数section的用法

    这篇文章主要介绍了smarty内置函数section的用法,实例分析了section的使用技巧与相关的参数说明,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • Zend Framework框架实现类似Google搜索分页效果

    Zend Framework框架实现类似Google搜索分页效果

    这篇文章主要介绍了Zend Framework框架实现类似Google搜索分页效果,结合实例形式分析了Zend Framework框架实现分页效果所涉及的基本查询、判断与分页效果构造相关操作技巧,需要的朋友可以参考下
    2016-11-11

最新评论