docs: 拆分 README.md 为多个子文档,README 简化为架构引导大纲
This commit is contained in:
110
codes/agent/game-docker/docs/02-scheduled-tasks.md
Normal file
110
codes/agent/game-docker/docs/02-scheduled-tasks.md
Normal 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
|
||||
```
|
||||
Reference in New Issue
Block a user