docs: 拆分 README.md 为多个子文档,README 简化为架构引导大纲

This commit is contained in:
2026-04-14 12:23:31 +08:00
parent 7758930a01
commit f98091bb54
9 changed files with 1459 additions and 1636 deletions

View File

@@ -0,0 +1,110 @@
# 定时任务说明
Docker 部署包含两个定时任务容器,替代原 Windows 环境的 `HttpRequestService.exe``autorun.cmd`
---
## syncjob — 实时同步任务
**替代:** Windows `HttpRequestService.exe`(通过 `HttpRequest.exe.json` 配置)
**作用:** 每 30 秒 POST 请求 `dlweb/ext/Synchronize.php`,从游戏数据库 `ct_user_process_log` 表消费未处理日志,将玩家/代理数据同步到代理后台数据库。
**运行方式:** 通过 Docker 内网直连 `http://dlweb/ext/Synchronize.php`,不经过公网域名,零流量消耗。
### 可配置项(`.env`
```bash
# 轮询间隔(秒),默认 30
SYNC_INTERVAL=30
# 每次处理的日志条数,默认 200
SYNC_PROCESSCOUNT=200
```
### 查看同步日志
```bash
./deploy.sh logs syncjob
# 或实时查看
docker logs -f youle-syncjob
```
### 调整同步频率
```bash
# 修改 .env
SYNC_INTERVAL=15 # 15 秒一次
SYNC_PROCESSCOUNT=500 # 每次处理 500 条
# 重启 syncjob
docker compose restart syncjob
```
---
## cronjob — 每日定时任务
**替代:** Windows 计划任务调用的 `tools-docker/autorun.cmd`
**作用:** 每日凌晨 4:00 执行以下流程(与原 `autorun.cmd` 完全一致):
| 步骤 | 原 autorun.cmd | Docker cronjob |
|------|---------------|----------------|
| 1. 停止同步服务 | `net stop HttpRequestService` | 创建 `/shared/syncjob.pause` 信号文件 |
| 2. 等待当前请求完成 | Windows 服务立即停止) | `sleep 5` |
| 3. 同步报表数据 | `HttpRequest.exe POST SynchronizeReportData.php` | `curl POST http://dlweb/ext/SynchronizeReportData.php` |
| 4. 恢复同步服务 | `net start HttpRequestService` | 删除 `/shared/syncjob.pause` 信号文件 |
> **暂停机制:** `syncjob` 和 `cronjob` 通过共享 Docker volume`shared-signal`)通信。`cronjob` 创建 `/shared/syncjob.pause` 文件时,`syncjob` 会自动跳过轮询,报表同步完成后删除该文件恢复。
### 可配置项(`.env`
```bash
# cron 表达式,默认凌晨 4:00
CRON_SCHEDULE=0 4 * * *
```
**修改执行时间示例:**
```bash
# 凌晨 3:30 执行
CRON_SCHEDULE=30 3 * * *
# 每天凌晨 2:00 和 14:00 各执行一次
CRON_SCHEDULE=0 2,14 * * *
```
### 查看执行日志
```bash
./deploy.sh logs cronjob
# 或实时查看
docker logs -f youle-cronjob
```
### 手动触发(测试用)
```bash
docker exec youle-cronjob /bin/sh /app/daily-task.sh
```
### 调整每日任务执行时间
```bash
# 修改 .env
CRON_SCHEDULE=30 3 * * * # 改为凌晨 3:30
# 重启 cronjob
docker compose restart cronjob
```
---
## 临时停止定时任务(维护数据库时)
```bash
docker compose stop syncjob cronjob
# 维护完成后恢复
docker compose up -d syncjob cronjob
```