这是一个功能全面的Minecraft服务器状态监控系统,允许用户实时监控多个Minecraft服务器的状态信息,并提供丰富的管理和数据可视化功能。
- 实时显示Minecraft服务器状态卡片
- 包含服务器图标、在线状态、在线人数、版本和MOTD
- 支持多种排序方式(按权重、ID、名称等)
- 响应式设计,适配不同屏幕尺寸
- 在线人数历史记录:自动记录各服务器在线人数变化
- 数据可视化图表:直观展示在线人数历史趋势
- 数据优化存储:智能记录算法,相同人数只更新时间戳,减少数据库存储
- 服务器类型支持:支持Java版/基岩版 服务器
- 自定义显示设置:可控制是否显示特定服务器的历史记录
- 管理员后台管理界面
- 添加、编辑和删除服务器
- 设置服务器排序权重
- 查看API调用日志
- 系统安装自动检测与重定向
- PHP 7.0+
- MySQL 5.6+
- cURL扩展
- 支持MySQLi扩展
系统已实现全自动化安装流程,您只需按照以下步骤操作: 打包塞进你的web服务器中
- 首次访问:在浏览器中打开网站根目录(如 http://localhost/MC-Server-status/)
- 自动跳转:系统会自动检测是否已安装,未安装时将跳转到安装设置页面
- 填写配置信息:
- 数据库配置:填写数据库主机、用户名、密码和数据库名称
- 管理员账户配置:设置管理员用户名和密码
- 网站配置:设置网站标题
- 完成安装:点击"完成安装"按钮提交表单
- 自动跳转:安装成功后,系统会自动创建已安装标记文件,并跳转到监控页面
- 安装过程中会自动创建必要的数据库表和初始管理员账户
- 安装完成后,系统会创建
installed.lock文件作为已安装标记 - 如果需要重新安装,请手动删除
installed.lock文件 - 安装后请及时修改管理员密码,确保系统安全
- 确保服务器上的PHP有权限写入配置文件和创建已安装标记文件
- 登录后台:点击网站右上角的"管理员登录"链接
- 添加服务器:在后台页面填写服务器名称、地址和服务器类型,设置排序权重
- 编辑服务器:点击服务器列表中的"编辑"按钮修改服务器信息
- 删除服务器:点击服务器列表中的"删除"按钮删除服务器
- 设置历史记录显示:可控制是否显示特定服务器的在线人数历史记录
- 退出登录:点击后台页面右上角的"退出登录"按钮
- 首页会显示所有已添加服务器的状态卡片
- 卡片显示服务器图标、名称、地址、在线状态、在线人数、版本和MOTD
- 支持查看各服务器的在线人数历史记录图表
- 鼠标悬停在卡片上会有轻微的上浮效果
- 系统会自动记录服务器在线人数变化
- 智能优化存储:当在线人数与上次记录相同时,系统会自动更新记录时间,而不是创建新记录
- 此优化大幅减少数据库存储空间并提高查询效率
- 历史数据会以图表形式直观展示
install.php:安装设置页面,包含数据库连接和管理员账户设置表单installed.lock:系统自动创建的已安装标记文件db.php:数据库连接和操作类,包含所有数据库操作方法config.php:系统配置文件,存储数据库连接信息等admin.php:管理员后台管理页面index.php:服务器监控主页面player_history_chart.php:在线人数历史图表页面get_player_data.php:提供历史数据的API接口view_logs.php:查看系统日志页面- 所有页面文件都已添加安装状态检查逻辑,未安装时会自动重定向到安装页面
系统采用了智能的数据记录优化技术,当连续监测到相同的在线人数时,只会更新最后一条记录的时间戳,而不是创建新的记录。这种方式:
- 可减少90%以上的冗余数据
- 提高数据库查询效率
- 降低存储空间占用
- 不影响图表展示的准确性
servers:存储服务器基本信息,包含显示/隐藏历史记录的控制字段player_history:存储优化后的在线人数历史数据
-
服务器地址不包含端口怎么办?
- 系统默认使用25565端口,无需额外设置
-
如何重新安装系统?
- 手动删除
installed.lock文件后,重新访问网站即可
- 手动删除
-
如何调整服务器显示顺序?
- 在管理员后台编辑服务器时设置排序权重,数字越大显示越靠前
-
为什么有些服务器没有历史记录图表?
- 请确保在管理员后台开启了该服务器的历史记录显示功能
-
历史数据是如何存储的?
- 系统采用智能优化存储,相同人数只更新时间戳,详情请参考"在线人数记录机制"部分
-
数据库中没有记录在线人数是为什么?
- 网站程序无法主动调用API去记录人数,只有有人访问网站时才会被动地获取数据并记录
- 可以使用Python程序每隔5分钟访问一次网站来解决这个问题,对应的程序已上传到仓储中
main.py
import requests import time from datetime import datetime def check_server_status(url): try: response = requests.get(url) # 获取当前时间 current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") # 打印访问时间和状态码 print(f"{current_time} - 访问 {url} - 状态码: {response.status_code}") except requests.exceptions.RequestException as e: # 如果请求失败,打印错误信息 current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") print(f"{current_time} - 请求失败 - 错误: {e}") def main(): url = "http://9gn5if.mcfuns.cn/" # 替换为你的网站URL interval = 300 # 5分钟的秒数 while True: check_server_status(url) time.sleep(interval) if __name__ == "__main__": main()
- 实现了智能的在线人数记录优化机制
- 增加了服务器类型选择功能
- 完善了安装流程,实现全自动安装
- 添加了服务器排序权重功能
- 增加了历史记录显示/隐藏控制
- 优化了数据库查询性能
- 图表中可以显示在线玩家列表
- 请求api并行,减少页面加载所需时间
- 优化log的读取和存储逻辑
参考项目 https://github.com/Relief156/McMotd-API 其中有使用方法,将对应的api地址填写在配置文件中即可
- 糖糕云:提供网页服务器与API服务器支持,糖糕云官网
- 北立交MC股东管理组:感谢与我半夜吹水,北立交桥官网
- Minecraft Server Status API:提供基岩版API支持,Minecraft Server Status API
如有任何问题或建议,请联系开发者。