Files
youlegames/codes/agent/game-docker/docker/cronjob/daily-task.sh
2026-04-10 16:44:13 +08:00

55 lines
2.3 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/sh
# 每日定时任务(替代 Windows autorun.cmd
# 凌晨 4:00 执行,通过 Docker 内网直连 dlweb 容器
#
# 原 autorun.cmd 流程:
# 1. net stop HttpRequestService (停止 Synchronize.php 轮询)
# 2. POST SynchronizeReportData.php同步报表数据
# 3. net start HttpRequestService (恢复 Synchronize.php 轮询)
#
# Docker 等价实现:通过共享文件 /shared/syncjob.pause 暂停/恢复 syncjob
DLWEB_URL="${DLWEB_INTERNAL_URL:-http://dlweb}"
PAUSE_FILE="/shared/syncjob.pause"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
echo "========================================"
echo "[${TIMESTAMP}] 开始执行每日定时任务"
echo "========================================"
# --------------------------------------------------------
# 1. 停止同步服务(等价于 net stop HttpRequestService
# 创建暂停信号文件syncjob 检测到后会跳过轮询
# --------------------------------------------------------
echo "[$(date '+%H:%M:%S')] 暂停 syncjob 同步服务..."
touch "${PAUSE_FILE}"
# 等待当前可能正在执行的请求完成
sleep 5
# --------------------------------------------------------
# 2. 同步报表数据 (SynchronizeReportData.php)
# 从游戏数据库同步 report_agent_day、report_game_day 到代理后台
# 并生成 ct_report_info 报表
# 与原 autorun.cmd 一致:不设超时、不重试,等待自然执行完毕
# --------------------------------------------------------
echo "[$(date '+%H:%M:%S')] 开始同步报表数据..."
RESULT=$(curl -sf -X POST "${DLWEB_URL}/ext/SynchronizeReportData.php" 2>&1)
EXIT_CODE=$?
if [ $EXIT_CODE -eq 0 ]; then
echo "[$(date '+%H:%M:%S')] 报表同步完成: ${RESULT}"
else
echo "[$(date '+%H:%M:%S')] 报表同步失败(${EXIT_CODE}): ${RESULT}"
fi
# --------------------------------------------------------
# 3. 恢复同步服务(等价于 net start HttpRequestService
# 删除暂停信号文件syncjob 恢复正常轮询
# --------------------------------------------------------
echo "[$(date '+%H:%M:%S')] 恢复 syncjob 同步服务..."
rm -f "${PAUSE_FILE}"
echo "========================================"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 每日定时任务执行完毕"
echo "========================================"