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

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

437 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判断某个时间戳(打卡、点餐、签到等)是不是今天记录的

php判断时间戳是不是今天的实现方法:首先创建一个PHP示例文件;指定一个时间,并...

15 1089
PHP怎样正则匹配段落里的图片并提取图片链接?
PHP怎样正则匹配段落里的图片并提取图片链接?

在程序开发的过程中,我们可能需要提取段落里的图片用作缩略图。那么,这个正则...

19 893
PHP怎样用正则判断一个链接是内链还是外链?
PHP怎样用正则判断一个链接是内链还是外链?

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

26 1291
str_replace怎样一次性替换多个值(数组)?
str_replace怎样一次性替换多个值(数组)?

我们知道,str_replace是可以执行替换命令的,但一般是用于一对一替换,这个很好...

1 401
一句话防御首页带问号?的垃圾链接分权重
一句话防御首页带问号?的垃圾链接分权重

任何站点但凡有点流量就会遇到这种情况:首页被人用问号传了参数,恰恰还被收录...

1 453
ajax发起session请求发现session无效了怎么办?
ajax发起session请求发现session无效了怎么办?

今天遇到这样一个问题:php启用了session,经过测试也发现session生效了。但在a...

1 399
php怎样开启debug调试模式?
php怎样开启debug调试模式?

我们使用php开发网站的时候,经常会需要调试确保功能正常。而如果功能出现异...

0 636
php基础应用:获取今天是星期几并给变量赋值
php基础应用:获取今天是星期几并给变量赋值

在网站的开发过程中,我们经常需要获取今天是星期几,并根据星期的不同而进行不...

0 361
推荐插件
帝国cms自动给正文关键词添加tag内链
帝国cms自动给正文关键词添加tag内链

帝国cms有自带的给关键词添加内链功能,但需要手动添加关键词,容易出现疏漏和...

0 735
帝国cms访问统计ip地址链接与封禁插件下载
帝国cms访问统计ip地址链接与封禁插件下载

下载鸥开发了这款帝国cms封禁ip插件,自动记录访问情况,让我们可以更快的识别...

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

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

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

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

0 238
帝国cms百度、必应bing、神马推送增强收录三合一插件
帝国cms百度、必应bing、神马推送增强收录三合一插件

因客户需要一键推送到多平台,下载鸥开发了这款一键推送至百度、必应、神马插...

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

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

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

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

0 671
帝国cms网站会员登录与退出历史记录日志插件
帝国cms网站会员登录与退出历史记录日志插件

帝国cms默认只有上次登录时间与ip,没有一个记录清单,所以今天,我们分享这个帝...

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