主从数据库同步功能实现记录
时间戳：2025-01-12

## 功能概述
实现了游戏的主从数据库同步功能，支持四种不同的从服务器级别：
- slave_level = 0：主服务器，正常处理，无变化
- slave_level = 1：从服务器，手动迁移用户和成就数据
- slave_level = 2：从服务器，自动同步用户数据
- slave_level = 3：从服务器，直接使用主数据库

## 实现的文件修改

### 1. 配置文件修改
- **config.inc.php**：添加了主从配置项
  - $slave_level：从服务器级别
  - $master_dbhost：主数据库服务器地址
  - $master_dbuser：主数据库用户名
  - $master_dbpw：主数据库密码
  - $master_dbname：主数据库名
  - $master_tablepre：主数据库表前缀
  - $master_server_name：主服务器名称

### 2. 安装脚本修改
- **install.php**：
  - 添加了主从配置的表单字段
  - 添加了主从配置的默认值初始化
  - 添加了主从配置的保存处理逻辑

### 3. 管理界面修改
- **include/admin/configmng.php**：添加了主从配置的显示变量
- **templates/default/admin_configmng.htm**：添加了主从配置的只读显示界面

### 4. 核心功能文件
- **include/masterslave.func.php**：新建文件，包含所有主从同步的核心功能
  - connect_master_db()：连接主数据库
  - check_user_in_master()：检查用户是否在主数据库中存在
  - sync_user_from_master()：从主数据库同步用户数据
  - get_user_sync_info()：获取用户同步信息
  - set_user_sync_info()：设置用户同步信息
  - create_sync_table_if_not_exists()：创建同步表
  - get_user_sync_status()：获取用户同步状态
  - should_auto_sync()：检查是否需要自动同步
  - should_use_master_db()：检查是否直接使用主数据库

### 5. 用户界面修改
- **user.php**：
  - 添加了主从同步功能的引入
  - 添加了sync_master模式的处理逻辑
  - 添加了主从同步相关的显示变量

- **templates/default/user.htm**：
  - 添加了主从数据库同步功能的界面
  - 包含用户名密码输入框
  - 包含同步按钮和JavaScript处理函数
  - 显示已绑定账户信息和注意事项

### 6. 登录逻辑修改
- **login.php**：
  - 添加了主从同步功能的引入
  - 实现了slave_level=2时的自动同步逻辑
  - 当用户不存在时自动尝试从主数据库同步

### 7. 核心系统修改
- **include/common.inc.php**：
  - 修改了数据库连接逻辑
  - 实现了slave_level=3时直接使用主数据库
  - 正确设置了$gtablepre变量

### 8. 测试工具
- **test_masterslave.php**：新建测试脚本
  - 显示当前主从配置状态
  - 测试主数据库连接
  - 检查同步表状态
  - 提供同步功能测试界面

## 数据库表结构
自动创建的同步表：{$gtablepre}user_sync
- id：自增主键
- target_username：目标用户名（从服务器用户名）
- master_username：主服务器用户名
- sync_time：同步时间戳

## 功能特点
1. **安全性**：
   - 需要验证主服务器的用户名和密码
   - 每个主服务器账户只能绑定一个从服务器账户
   - 防止重复同步和冲突

2. **灵活性**：
   - 支持手动迁移和自动同步两种模式
   - 可配置不同的从服务器级别
   - 支持显示同步状态和历史

3. **用户体验**：
   - 清晰的界面提示和操作指导
   - 同步状态的实时反馈
   - 管理界面的只读显示

4. **数据完整性**：
   - 同步用户的积分、成就、头衔等关键数据
   - 保持数据的一致性和完整性
   - 记录同步历史和状态

## 注意事项
1. 主从配置不能通过管理界面修改，只能通过config.inc.php文件或安装脚本配置
2. slave_level=3的直接使用主数据库功能需要进一步实现
3. 需要确保主从服务器之间的网络连接稳定
4. 建议在生产环境中谨慎使用自动同步功能

## 后续扩展
1. 实现slave_level=3的直接主数据库访问
2. 添加更多的同步选项和过滤条件
3. 实现双向同步功能
4. 添加同步日志和监控功能
