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


Posted in PHP onAugust 12, 2016

使用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 相关文章推荐
php 图片上添加透明度渐变的效果
Jun 29 PHP
PHP开发环境配置(MySQL数据库安装图文教程)
Apr 28 PHP
利用PHP+JS实现搜索自动提示(实例)
Jun 09 PHP
使用php统计字符串中中英文字符的个数
Jun 23 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
Sep 26 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
Jul 28 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
Aug 22 PHP
PHP实现自动对图片进行滚动显示的方法
Mar 12 PHP
smarty中常用方法实例总结
Aug 07 PHP
详解PHP中的null合并运算符
Dec 30 PHP
php中文乱码问题的终极解决方案汇总
Aug 01 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
Aug 30 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
Aug 12 #PHP
PHP请求Socket接口测试实例
Aug 12 #PHP
php+jquery+html实现点击不刷新加载更多的实例代码
Aug 12 #PHP
php网页版聊天软件实现代码
Aug 12 #PHP
PHP 自动加载的简单实现(推荐)
Aug 12 #PHP
py文件转exe时包含paramiko模块出错解决方法
Aug 12 #PHP
PHP url的pathinfo模式加载不同控制器的简单实现
Aug 12 #PHP
You might like
PHP 获取MSN好友列表的代码(2009-05-14测试通过)
2009/09/09 PHP
PHP实现图片压缩的两则实例
2014/07/19 PHP
PHP屏蔽过滤指定关键字的方法
2014/11/03 PHP
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
php从文件夹随机读取文件的方法
2015/06/01 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
js直接编辑当前cookie的脚本
2008/09/14 Javascript
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
页面只能打开一次Cooike如何实现
2012/12/04 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
jquery获取tr并更改tr内容示例代码
2014/02/13 Javascript
JS的事件绑定深入认识
2014/06/26 Javascript
jQuery元素选择器用法实例
2014/12/23 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
2015/12/03 Javascript
Zabbix添加Node.js监控的方法
2016/10/20 Javascript
微信小程序 wxapp内容组件 text详细介绍
2016/10/31 Javascript
Vue.js 中的 v-show 指令及用法详解
2018/11/19 Javascript
JS使用对象的defineProperty进行变量监控操作示例
2019/02/02 Javascript
小程序自定义模板实现吸顶功能
2020/01/08 Javascript
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
python处理csv数据的方法
2015/03/11 Python
python函数形参用法实例分析
2015/08/04 Python
基于循环神经网络(RNN)实现影评情感分类
2018/03/26 Python
tensorflow 查看梯度方式
2020/02/04 Python
vue常用指令代码实例总结
2020/03/16 Python
Django 解决新建表删除后无法重新创建等问题
2020/05/21 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
html5中嵌入视频自动播放的问题解决
2020/05/25 HTML / CSS
超市活动计划书
2014/04/24 职场文书
环保倡议书怎么写
2014/05/16 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
2014房屋登记授权委托书
2014/10/13 职场文书
临时用工协议书范本
2014/10/29 职场文书
社区端午节活动总结
2015/02/11 职场文书
2016年感恩节寄语
2015/12/07 职场文书
大学生奶茶店创业计划书
2019/06/25 职场文书