以下是使用PHP和HTML编写的一个简单的网站状态实时监控页面,用于监控最近30天的网站访问情况。这个示例中没有使用数据库,而是将监控数据保存在一个文本文件中。\n\nphp\n<?php\n// 网站列表,用于监控\n$websites = [\n 'https://www.example.com',\n 'https://www.example2.com',\n 'https://www.example3.com'\n];\n\n// 保存监控数据的文件路径\n$dataPath = 'monitor_data.txt';\n\n// 检查网站是否可访问\nfunction checkWebsite($url) {\n $ch = curl_init($url);\n curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n curl_exec($ch);\n $responseCode = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);\n curl_close($ch);\n return $responseCode;\n}\n\n// 读取监控数据\nfunction readMonitoringData() {\n global $dataPath;\n if (file_exists($dataPath)) {\n $data = file_get_contents($dataPath);\n return unserialize($data);\n }\n return [];\n}\n\n// 保存监控数据\nfunction saveMonitoringData($data) {\n global $dataPath;\n $serializedData = serialize($data);\n file_put_contents($dataPath, $serializedData);\n}\n\n// 获取最近30天的日期\nfunction getLast30Days() {\n $dates = [];\n for ($i = 29; $i >= 0; $i--) {\n $date = date('Y-m-d', strtotime("-{$i} days"));\n $dates[] = $date;\n }\n return $dates;\n}\n\n// 监控网站状态\nfunction monitorWebsites($websites) {\n $data = readMonitoringData();\n $dates = getLast30Days();\n \n foreach ($websites as $website) {\n $status = checkWebsite($website);\n $data[$website][] = $status;\n \n // 移除超过30天的数据\n if (count($data[$website]) > 30) {\n array_shift($data[$website]);\n }\n }\n \n saveMonitoringData($data);\n \n return $data;\n}\n\n// 执行监控并获取最新数据\n$data = monitorWebsites($websites);\n?>\n\n<!DOCTYPE html>\n<html>\n<head>\n <title>网站状态实时监控</title>\n <style>\n table {\n border-collapse: collapse;\n }\n \n table, th, td {\n border: 1px solid black;\n padding: 5px;\n }\n </style>\n</head>\n<body>\n <h1>网站状态实时监控</h1>\n <table>\n <tr>\n <th>网站</th>\n <?php foreach (getLast30Days() as $date): ?>\n <th><?php echo $date; ?></th>\n <?php endforeach; ?>\n </tr>\n <?php foreach ($data as $website => $statuses): ?>\n <tr>\n <td><?php echo $website; ?></td>\n <?php foreach ($statuses as $status): ?>\n <td <?php echo $status != 200 ? 'style="background-color: red;"' : ''; ?>><?php echo $status; ?></td>\n <?php endforeach; ?>\n </tr>\n <?php endforeach; ?>\n </table>\n</body>\n</html>\n\n\n在上述代码中,我们首先定义了一个网站列表 $websites,用于监控。然后,我们定义了一个函数 checkWebsite(),该函数使用 cURL 发送请求来检查网站是否可访问,并返回响应状态码。\n\n接下来,我们定义了函数 readMonitoringData()saveMonitoringData(),用于读取和保存监控数据。监控数据以关联数组的形式保存,其中键是网站的 URL,值是一个数组,包含每天的响应状态码。\n\n然后,我们定义了函数 getLast30Days(),用于获取最近30天的日期。\n\n接下来,我们定义了函数 monitorWebsites(),它会迭代网站列表,并使用 checkWebsite() 检查每个网站的状态。然后,它将状态码添加到相应的监控数据中,并确保每个网站的监控数据只保存最近30天的数据。\n\n最后,在 HTML 部分,我们使用一个表格来显示网站状态的实时监控数据。表格的第一行显示日期,后面的行显示每个网站的状态码。如果状态码不是 200,则单元格的背景颜色将变为红色。\n\n请注意,此示例仅为了演示目的,实际的监控系统可能需要更复杂的实现和更全面的错误处理。

PHP 网站状态实时监控页面 - 30 天访问数据报表 (无需数据库)

原文地址: https://www.cveoy.top/t/topic/qm2m 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录