赞片CMScron不执行

chinaz
chinaz 初级会员超兽战士
发布于 2026-10-08 18:31 ·1 浏览 ·0 回复

照着这篇做完,你就能找出赞片CMS定时任务(cron)不执行的真正原因,并让它重新跑起来。

赞片CMS的定时任务不是一个后台按钮那么简单,它由三部分组成:后台的任务配置(开关、间隔、任务地址)→ 服务器上的定时触发器(宝塔计划任务或 Linux crontab)→ 任务本身的执行环境(PHP超时、权限、时区、锁文件)。任何一环断了,表现都是"任务不执行"。按下面的顺序一步步排查,不要跳步。

第一步:拿到任务地址,并在浏览器里手动跑一次

这一步要拿到一条可以直接访问的 URL,并确认任务程序本身是活的。

登录赞片CMS后台 → 左侧菜单「系统」→「定时任务」(部分版本叫「计划任务」「任务中心」),找到采集或自动更新的那条任务,页面上会显示任务地址,形如:

  • https://你的域名/api.php/timming/index.html
  • 或 https://你的域名/index.php/cms/timming/index

以你后台实际显示的为准,不要照抄本文。把这条地址复制到浏览器新标签页访问一次。

  • 返回 ok、success、JSON 数据:任务程序正常,问题在服务器触发器(跳到第三步)。
  • 返回 404:伪静态没生效,把地址里的 api.php / index.php 形式换成另一种再试。
  • 返回 500:PHP 报错了,去 /www/wwwroot/你的站点/runtime/log/ 下看当天日志。
  • 返回"任务未开启""没有可执行任务":回后台把任务状态改成「开启」,设置好执行间隔和开始时间再访问。

注意:URL 里的域名必须和站点绑定的主域名一致。如果站点开了强制 HTTPS,地址必须写 https://,写 http:// 会被 301 跳转,cron 工具默认不跟随跳转,等于没访问。

第二步:确认后台配置里的"开关"和"时间"

这一步检查任务自身有没有被允许执行。

在同一个「定时任务」列表里,逐项确认:状态为「开启」;执行间隔已填(如 60 分钟);「上次执行时间」是否有值。如果「上次执行时间」永远是空的,说明任务从来没被触发过,问题一定在服务器侧。

第三步:在服务器上配置触发器

这一步让服务器每分钟去访问一次第一步拿到的地址。

如果你用宝塔面板:左侧「计划任务」→「添加任务」→ 任务类型选「访问URL」→ URL 填第一步的地址 → 执行周期选「N分钟」填 1 → 保存。保存后点该任务右侧「日志」,看有没有每次执行的记录。

如果你用纯命令行,SSH 登录后执行 crontab -e,加一行:

*/1 * * * * curl -s "https://你的域名/api.php/timming/index.html" >/dev/null 2>&1

注意:宝塔的 URL 任务和系统的 curl 都只发 GET 请求。如果你的任务地址是 POST 的,需要在命令里加 -d "",否则任务收不到参数。

第四步:排查"访问了但没效果"的六种常见原因

  1. PHP 执行超时。采集量大时任务跑不完就断了。宝塔「软件商店」→ PHP 对应版本「设置」→「配置修改」,把 max_execution_time 改成 300,memory_limit 改成 512M;同时把后台单次采集条数调小到 20 以内。
  2. 时区不一致。服务器时间快或慢,任务判断"还没到点"。SSH 执行 date 看系统时间,宝塔「面板设置」里点「同步时间」;同时把 php.ini 的 date.timezone 改为 Asia/Shanghai。
  3. 任务锁没释放。上一次任务卡死,锁文件还在,后续全部被跳过。到站点目录的 runtime/ 或 data/ 下找 .lock 结尾的文件(如 timming.lock),删掉再试。
  4. 目录权限不对。runtime、cache、data 三个目录必须可写。宝塔文件管理里选中这三个目录 → 权限设为 755,所有者设为 www,勾选「应用到子目录」。
  5. 采集源已失效。手动访问任务地址时返回超时或空白,说明是资源站挂了,不是 cron 的问题,换采集接口地址即可。
  6. crontab 服务没启动。SSH 执行 systemctl status crond(CentOS)或 systemctl status cron(Ubuntu/Debian),显示 inactive 就执行 systemctl start crond 并 systemctl enable crond。

第五步:用日志确认已经恢复

任务重新跑起来后,回后台「系统」→「日志管理」或「采集日志」,能看到新生成的时间记录;宝塔「计划任务」→「日志」里也会每分钟出现一条访问记录。两边都有新记录,才算真正修好。

小结

  • 先手动访问后台显示的任务地址,区分是"任务程序问题"还是"触发器问题"。
  • 服务器侧用宝塔「计划任务 → 访问URL」或 crontab -e 加 curl,间隔设 1 分钟。
  • 手动能跑、cron 不跑,九成是 URL 协议(http/https)、301 跳转或 crontab 服务没启动。
  • 能跑但没结果,依次查 PHP 超时、时区、锁文件、目录权限、采集源。
版权声明:本文来自 GJ站长论坛《赞片CMScron不执行》
原文链接:https://www.gj0.com/thread-1097.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~