下载鸥 > 网站下载 > 开发教程 > PHP

PHP 正则匹配日志信息 并存入数据库

453 2021-04-13 15:06:01

收藏
日志分析许多人可能不在意,但养成查看日志的习惯,可以让你对网站的情况有充分的了解,如蜘蛛抓取频次、抓取页面、404页面、高频访问页面、高频访问ip、异常ip等等重要信息。网上的日志分析工具在我看来不够好用,所以琢磨自己写一个。

这里参考了csdn网友花与爱丽丝lxb的一个日志分析源码,转发给需要的朋友。
 
<?php
$DB_logs = Db::name('filelog');
$DB_logs->where('id', '>', 0)->delete();
//逐行读取数据
$file = "./filelogs/u_ex200102.log";
$handle = file($file);
for ($i = 0; $i < count($handle); $i++) {
//    除了正则外 还可以 以空格分开数据
//  日志格式  匹配时完全匹配  注意认真对照
//  $log = '2020-01-02 00:14:09 172.17.79.157 GET /hy/n235.htm - 443 - 23.234.223.202 Mozilla/5.0+(Linux;u;Android+4.2.2;zh-cn;)+AppleWebKit/534.46+(KHTML,like+Gecko)+Version/5.1+Mobile+Safari/10600.6.3+(compatible;+Baiduspider/2.0;++http://www.baidu.com/search/spider.html) 200 0 0 421';
    $pattern = '/^(?P<date>[0-9-]{10}) (?P<time>[0-9:]{8}) (?P<sip>[0-9.]+) GET (?P<url>[^ ]+) (?P<query>[^ ]+) (?P<port>[0-9]+) (?P<username>[^ ]+) (?P<ip>[0-9.]+) (?P<ua>[^s]+) (?P<end1>[0-9]+) (?P<end2>[0-9]+) (?P<end3>[0-9]+) (?P<end4>[0-9]+)/i';
    $res = preg_match($pattern, $handle[$i], $match);
    if ($res) {
        $data['id'] = $i + 1;
        $data['ip'] = $match['ip'];
        $data['time'] = $match['date'] . ' ' . $match['time'];
        $data['url'] = $match['url'];
        $data['ua'] = $match['ua'];
        $DB_logs->insert($data);
    }
}

本文地址:https://xzo.com.cn/develop/php/801.html

有帮助,很赞!

信息来源:下载鸥
导出教程 下载word版教程
发表评论 共有条评论
关于PHP

PHP是一种服务器端、跨平台、html嵌入式的脚本语言,其功能十分强大、入门简单。在过去,民间一直有说法称“PHP是最好的编程语言”,是PHP开发者对自身所使用语言的肯定。

PHP曾是最主流的网站web开发语言之一,现在也依然十分流行。

推荐PHP开发教程
PHP怎样用正则判断一个链接是内链还是外链?
PHP怎样用正则判断一个链接是内链还是外链?

在日常文章的发表过程中,由于需要引入一些外部链接达到更好的效果与体验。但...

26 1312
当缓存文件大于4KB,不能用cookie时的替代方案就是session
当缓存文件大于4KB,不能用cookie时的替代方案就是session

鸥哥最近在开发一个项目,出于对用户隐私的保护,数据一概不能存储到数据表,而是...

1 432
php简单的数组介绍与应用
php简单的数组介绍与应用

数组在实际开发过程中运用非常频繁,通过合理运用数组,我们可以顺利实现各种数...

1 371
怎样在每次发起请求时重置session_id?
怎样在每次发起请求时重置session_id?

在一些开发场景中,我们需要在每次发起请求后更新重置session_id以同步用户数...

3 391
PHP函数switch()介绍
PHP函数switch()介绍

通俗的说,现在有结果A B C D E,每个结果代表不同的意义,此时我们可以用if else...

0 425
php常用基础函数isset()介绍
php常用基础函数isset()介绍

isset() 函数用于检测变量是否已设置并且非 NULL。如果已经使用 unset() 释...

0 380
php正则提取字符串中的数字并打印输出
php正则提取字符串中的数字并打印输出

我们在网站开发的过程中经常需要处理数据,今天讲讲怎样用正则提取字符串中的...

0 402
PHP的for循环为什么只执行了一次就停止了?
PHP的for循环为什么只执行了一次就停止了?

今天有朋友咨询鸥哥,说php写的for循环本来至少要循环9次,但却只执行了一次就...

1 416
推荐插件
帝国cms智能自动审核按星期几审核指定栏目带推送插件
帝国cms智能自动审核按星期几审核指定栏目带推送插件

采集站的必备资源是自动审核,要做到日收录也离不开定时发布。而本插件的自动...

0 1263
帝国cms自动生成文章新闻目录插件下载
帝国cms自动生成文章新闻目录插件下载

用户体验是我们的需求,百度蜘蛛的认可更是我们的需求。毕竟,没有收录排名,何来...

0 1111
帝国cms百度AI图像无损放大api接口对接插件
帝国cms百度AI图像无损放大api接口对接插件

通过本插件,可以实现帝国cms网站对接百度云api实现图像无损放大的功能。经过...

0 430
帝国cms百度文字识别ocr接口对接插件
帝国cms百度文字识别ocr接口对接插件

许多网站会做一些小功能小插件给客户使用以增强用户黏性,比如图片转文字,这种...

0 453
帝国cms联想词搜索高级搜索插件下载
帝国cms联想词搜索高级搜索插件下载

帝国CMS自带的搜索功能虽然强大,但也有很强的局限性 -- 必须关键词完全匹配...

0 722
帝国cms纳米数据接口(足球比赛中最新数据)
帝国cms纳米数据接口(足球比赛中最新数据)

帝国cms 对接纳米数据(www.nami.com)接口,本接口主要接收、整理足球比赛实时数...

0 391
帝国cms百度AI图像去雾api接口对接插件
帝国cms百度AI图像去雾api接口对接插件

通过本插件,可以实现帝国cms网站对接百度云api实现图像去雾的功能。经过实际...

0 447
帝国cms在线考试系统模板插件
帝国cms在线考试系统模板插件

一直没看到好用的帝国cms在线考试插件,所以自己开发了一款。在线考试插件用...

0 1270
客服QQ:341553759
扫码咨询 常见问题 >
官方交流群:90432500
点击加入