Z-Blog 定时发布文章的实现原理与失败排查

· zblog · 阅读 6
摘要

先说结论:Z-Blog 的定时发布依赖「有待发布文章 + 有访问触发或计划任务执行」。绝大多数定时发布失败,不是功能坏了,而是没人访问、计划任务没配、或时区不对。 一、先理解它是怎么工作的 定时发布不是「到点自动开一个进程」,而是靠以下两种

先说结论:Z-Blog 的定时发布依赖「有待发布文章 + 有访问触发或计划任务执行」。绝大多数定时发布失败,不是功能坏了,而是没人访问、计划任务没配、或时区不对。

一、先理解它是怎么工作的

定时发布不是「到点自动开一个进程」,而是靠以下两种方式之一触发检查:

  • 访问触发:有前台访问时顺带检查并发布到期文章。站点没流量就不会触发。
  • 计划任务(Cron):主机或面板定时访问站点,主动触发检查。这是小流量站更可靠的方式。

二、最常见的四个失败原因

  1. 没有访问也没配 Cron:文章一直「待发布」。解决办法是配一条定时请求。
  2. 时区不一致:后台时区与服务器时区不同,设定的时间会偏差几小时。先核对站点时区设置。
  3. 状态不是待发布:草稿与待发布是两回事,草稿永远不会自动上线。
  4. 缓存干扰:文章其实已发布,但首页缓存未刷新,看起来像没发。

三、配置计划任务的正确姿势

  • 频率:5–10 分钟一次足够,别设成每分钟,容易被主机限流。
  • 请求目标:指向站点首页或公开接口即可,不要带后台路径。
  • 验证:配好后手动执行一次,看返回状态码是否 200。

四、排查流程

  1. 看后台文章状态,确认是「待发布」而不是「草稿」。
  2. 核对设定时间与站点时区。
  3. 手动访问一次首页,看文章是否立刻出现 → 出现说明只是缺触发。
  4. 仍不出现,清缓存并重建,再看数据库里该文章的状态字段。
  5. 全都不行,检查计划任务是否真的在跑(看访问日志有没有规律请求)。

五、稳妥做法

重要时间节点的发布,不要完全依赖自动:提前一天把文章设为待发布,并在关键时间点人工确认一次。技术兜底 + 人工确认,比赌定时准确要稳。