gpt4 book ai didi

php - 使用 PHP 从日志文件中提取数据

转载 作者:行者123 更新时间:2023-12-04 02:14:46 25 4
gpt4 key购买 nike

我有一个服务器日志文件,我试图从中创建一个 PHP 页面,该页面总结了它存储的数据。日志中的每条记录都存储在一个新行中,格式为:

207.3.35.52 -- [2007-04-01 01:24:42] "GET index.php HTTP/1.0" 200 11411 "Mozilla/4.0"

//ip -- [timestamp] "GET url HTTP/1.0" status code bytes "user agent".

我正在尝试编写一个摘要,其中显示:请求总数、来自文章目录的请求总数、消耗的总带宽以及最后 404 错误及其页面的数量。

PHP:

$handle = fopen('logfiles/april.log','r') or die ('File opening failed');
$requestsCount = 0;
while (!feof($handle)) {
$dd = fgets($handle);
$requestsCount++;
$parts = explode('"', $dd);
$statusCode = substr($parts[2], 0, 4);
}
fclose($handle);

此代码打开文件并统计记录的数量,分离并查找记录中的状态码编号。当回显 $statusCode 时,它​​确实显示了正确的信息,显示了日志中的所有状态代码。

一个函数接受两个参数来计算 404 错误的总数:

function requests404($l,$s) {
$r = substr_count($l,$s);
return "Total 404 errors: ".$r."<br />";
}

回显结果:

echo requests404($statusCode, '404');

此函数不起作用,它只返回 0。在 PHP 中处理 txt 文件是我最薄弱的技能,我非常感谢您的帮助,因为我认为我可能以完全错误的方式进行处理。谢谢。

最佳答案

$handle = fopen('logfiles/april.log','r') or die ('File opening failed');
$requestsCount = 0;
$num404 = 0;

while (!feof($handle)) {
$dd = fgets($handle);
$requestsCount++;
$parts = explode('"', $dd);
$statusCode = substr($parts[2], 0, 4);
if (hasRequestType($statusCode, '404')) $num404++;
}

echo "Total 404 Requests: " . $num404 . "<br />";
fclose($handle);

function hasRequestType($l,$s) {
return substr_count($l,$s) > 0;
}

关于php - 使用 PHP 从日志文件中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13380595/

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