这里有新鲜出炉的PHP面向对象编程,程序狗速度看过来!
PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于web开发领域。PHP的文件后缀名为php。
下面小编就为大家带来一篇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 读取大文件并显示的简单实例(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持PHPERZ。
来源: http://www.phperz.com/article/17/0829/343017.html