首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >畅捷通定时任务配置与Cron自动化运维指南

畅捷通定时任务配置与Cron自动化运维指南

原创
作者头像
企业管理软件开发
发布2026-06-19 12:52:55
发布2026-06-19 12:52:55
520
举报

概述

畅捷通集成系统采用"CLI脚本 + Cron定时 + Web手动触发"的混合运维模式。sync_all.php 支持一键全量同步,各独立脚本支持单独执行,resend_appTicket.php 提供 Ticket 手动补推能力。本文详解部署环境配置、定时策略设计、日志监控和异常恢复方案。

graph TB
graph TB

一、服务端部署架构

1.1 目录结构

代码语言:javascript
复制
/var/www/chanjet/                    # 部署根目录
├── config.json                      # 凭证和数据库配置
├── appTicket.php                    # Ticket接收端点
├── fetch_token.php                  # Token获取脚本
├── resend_appTicket.php             # Ticket补推工具
├── get_token.php                    # Web Token管理器
├── sync_all.php                     # 一键全量同步
├── sync_helper.php                  # 通用函数库
├── sync_warehouse.php               # 仓库同步
├── sync_employee.php                # 员工同步
├── sync_partner.php                 # 往来单位同步
├── sync_inventory.php               # 存货同步
├── sync_inventory_class.php         # 存货分类同步
├── sync_bom.php                     # BOM同步
├── db_view.php                      # 数据查看工具
├── test_purchase.php                # 采购订单测试
├── HaoTong.php                      # 审批流插件
├── connector/                       # 低代码编排平台
└── appTicket.txt                    # Ticket文件(运行时生成)
​

1.2 Nginx 配置要点

代码语言:javascript
复制
server {
    listen 20080;
    server_name _;
    root /var/www/chanjet;
  
    location /chanjet/ {
        # 关键:appTicket.php 必须能接收外部POST请求
    }
  
    location /chanjet/appTicket.php {
        # 畅捷通平台回调地址,需公网可达
    }
}
​
sequenceDiagram
sequenceDiagram

二、Cron 定时任务配置

2.1 推荐 Cron 配置

代码语言:javascript
复制
# 编辑 crontab
crontab -e

# ============================================
# 畅捷通 T+ 数据同步定时任务
# ============================================

# 1. 每日凌晨2点 — 全量同步所有基础档案
0 2 * * * /usr/bin/curl -s http://127.0.0.1:20080/chanjet/sync_all.php >> /var/log/chanjet/sync_$(date +\%Y\%m\%d).log 2>&1

# 2. 每5天凌晨3点 — 刷新Token(6天有效期,留1天buffer)
0 3 */5 * * /usr/bin/php /var/www/chanjet/fetch_token.php >> /var/log/chanjet/token_$(date +\%Y\%m\%d).log 2>&1

# 3. 每周一凌晨4点 — 补推appTicket
0 4 * * 1 /usr/bin/php /var/www/chanjet/resend_appTicket.php >> /var/log/chanjet/ticket_$(date +\%Y\%m\%d).log 2>&1

# 4. 每6小时 — 存货增量同步(可选,数据变化频繁时启用)
# 0 */6 * * * /usr/bin/curl -s http://127.0.0.1:20080/chanjet/sync_inventory.php >> /var/log/chanjet/inventory_$(date +\%Y\%m\%d).log 2>&1
​

2.2 Cron 时间策略分析

任务

Cron表达式

频率

原因

全量同步

0 2 * * *

每天

凌晨业务低峰期

Token刷新

0 3 */5 * *

每5天

Token有效期6天

Ticket补推

0 4 * * 1

每周

Ticket 30分钟有效但仅需确保通路

日志清理

0 5 * * 0

每周

清理30天前日志

gantt
gantt

三、sync_all.php 执行策略

3.1 顺序执行机制

代码语言:javascript
复制
// sync_all.php 第19-59行
// 严格按顺序执行,先轻后重
try { $results['warehouse'] = syncWarehouse(); }       // ① 仓库(18条)
catch (Exception $e) { /* 失败不中断 */ }

try { $results['employee'] = syncEmployee(); }         // ② 员工(48条)
catch (Exception $e) { /* 失败不中断 */ }

try { $results['partner'] = syncPartner(); }           // ③ 往来单位(100条)
catch (Exception $e) { /* 失败不中断 */ }

try { $results['inventory'] = syncInventory(); }       // ④ 存货(7989条)
catch (Exception $e) { /* 失败不中断 */ }

try { $results['inventory_class'] = syncInventoryClass(); } // ⑤ 分类(671条)
catch (Exception $e) { /* 失败不中断 */ }

try { $results['bom'] = syncBom(); }                   // ⑥ BOM(95条)
catch (Exception $e) { /* 失败不中断 */ }
​

设计哲学:每个模块独立 try/catch,一个失败不影响其他。汇总返回各模块的成功/失败状态。

3.2 执行反馈格式

成功响应:

代码语言:javascript
复制
{
    "success": true,
    "time": "2025-06-18 02:00:15",
    "total": 8921,
    "results": {
        "warehouse": {"success": true, "count": 18},
        "employee": {"success": true, "count": 48},
        "partner": {"success": true, "count": 100},
        "inventory": {"success": true, "count": 7989},
        "inventory_class": {"success": true, "count": 671},
        "bom": {"success": true, "count": 95}
    }
}
​

部分失败:

代码语言:javascript
复制
{
    "success": false,
    "time": "2025-06-18 02:05:30",
    "total": 8020,
    "results": {
        "warehouse": {"success": true, "count": 18},
        "employee": {"success": true, "count": 48},
        "partner": {"success": true, "count": 100},
        "inventory": {"success": false, "message": "cURL error: timeout", "count": 0},
        "inventory_class": {"success": true, "count": 671},
        "bom": {"success": true, "count": 95}
    }
}
​

四、手动运维操作

4.1 快速数据校验

代码语言:javascript
复制
# 查看所有表的数据统计
curl http://127.0.0.1:20080/chanjet/db_view.php

# 查看存货表前50条
curl "http://127.0.0.1:20080/chanjet/db_view.php?t=tplus_inventory"

# 查看BOM表第3页
curl "http://127.0.0.1:20080/chanjet/db_view.php?t=tplus_bom&p=3"
​

4.2 Token 手动刷新

代码语言:javascript
复制
# 当Token过期时手动刷新
php /var/www/chanjet/fetch_token.php

# 或通过Web界面
# 浏览器访问: http://127.0.0.1:20080/chanjet/get_token.php
​

4.3 appTicket 补推

代码语言:javascript
复制
# appTicket接收异常时手动触发
php /var/www/chanjet/resend_appTicket.php

# 或浏览器访问Web界面
# http://127.0.0.1:20080/chanjet/resend_appTicket.php
​

4.4 单个模块重新同步

代码语言:javascript
复制
# 仅同步存货(大表,独立执行更快)
curl http://127.0.0.1:20080/chanjet/sync_inventory.php

# 仅同步BOM
curl http://127.0.0.1:20080/chanjet/sync_bom.php
​

五、日志管理

5.1 日志路径规划

代码语言:javascript
复制
/var/log/chanjet/
├── sync_20250618.log      # 每日同步日志
├── token_20250618.log      # Token刷新日志
├── ticket_20250618.log     # Ticket推送日志
└── archive/                # 历史归档
​

5.2 日志清理 Cron

代码语言:javascript
复制
# 每周日清理30天前的日志
0 5 * * 0 find /var/log/chanjet/ -name "*.log" -mtime +30 -delete
​

5.3 异常检测脚本

代码语言:javascript
复制
#!/bin/bash
# check_sync.sh - 检测同步是否成功

LOG_FILE="/var/log/chanjet/sync_$(date +%Y%m%d).log"

if ! grep -q '"success":true' "$LOG_FILE"; then
    echo "⚠ 畅捷通同步失败!" | mail -s "同步告警" admin@example.com
fi
​

六、故障恢复流程

flowchart TD
flowchart TD

七、监控告警配置建议

代码语言:javascript
复制
# 钉钉/企业微信 Webhook 告警(示例)
# 在 sync_all.php 执行后调用

WEBHOOK_URL="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx"

if [ "$SYNC_SUCCESS" != "true" ]; then
    curl -H "Content-Type: application/json" \
         -d "{\"msgtype\":\"text\",\"text\":{\"content\":\"⚠ 畅捷通同步失败!时间:$(date)\"}}" \
         "$WEBHOOK_URL"
fi
​

八、运维检查清单

频率

检查项

方法

每日

同步日志中"success":true

grep success /var/log/chanjet/sync_*.log

每日

各表数据量是否在合理范围

db_view.php 首页查看

每周

Token 是否在有效期内

get_token.php Web界面查看

每周

appTicket 接收端点是否可达

curl -I appTicket.php

每月

日志文件磁盘占用

du -sh /var/log/chanjet/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 一、服务端部署架构
    • 1.1 目录结构
    • 1.2 Nginx 配置要点
  • 二、Cron 定时任务配置
    • 2.1 推荐 Cron 配置
    • 2.2 Cron 时间策略分析
  • 三、sync_all.php 执行策略
    • 3.1 顺序执行机制
    • 3.2 执行反馈格式
  • 四、手动运维操作
    • 4.1 快速数据校验
    • 4.2 Token 手动刷新
    • 4.3 appTicket 补推
    • 4.4 单个模块重新同步
  • 五、日志管理
    • 5.1 日志路径规划
    • 5.2 日志清理 Cron
    • 5.3 异常检测脚本
  • 六、故障恢复流程
  • 七、监控告警配置建议
  • 八、运维检查清单
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档