#!/bin/sh # 定时同步任务:每 SYNC_INTERVAL 秒 POST 请求 dlweb 容器的 Synchronize.php # 通过 Docker 内网直连,不走域名/公网流量 # 支持暂停:当 /shared/syncjob.pause 文件存在时,跳过本轮请求 # 安装 curl(仅首次,后续重启容器时已安装则跳过) command -v curl > /dev/null 2>&1 || apk add --no-cache curl > /dev/null 2>&1 SYNC_URL="${SYNC_URL:-http://dlweb/ext/Synchronize.php}" SYNC_INTERVAL="${SYNC_INTERVAL:-30}" SYNC_PROCESSCOUNT="${SYNC_PROCESSCOUNT:-200}" PAUSE_FILE="/shared/syncjob.pause" echo "[syncjob] target: ${SYNC_URL}?processcount=${SYNC_PROCESSCOUNT}" echo "[syncjob] interval: ${SYNC_INTERVAL}s" while true; do # 检查暂停信号(cronjob 执行期间会创建此文件) if [ -f "${PAUSE_FILE}" ]; then echo "[$(date '+%Y-%m-%d %H:%M:%S')] PAUSED (${PAUSE_FILE} exists), skipping..." sleep "${SYNC_INTERVAL}" continue fi RESULT=$(curl -sf -X POST "${SYNC_URL}?processcount=${SYNC_PROCESSCOUNT}" 2>&1) EXIT_CODE=$? TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') if [ $EXIT_CODE -eq 0 ]; then echo "[${TIMESTAMP}] OK: ${RESULT}" else echo "[${TIMESTAMP}] FAIL(${EXIT_CODE}): ${RESULT}" fi sleep "${SYNC_INTERVAL}" done