gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章PHP 读取大文件并显示的简单实例(推荐)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

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

PHP代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?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 读取大文件并显示的简单实例(推荐)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com