我的网站健康部说cron-evens已经错过了时间表,所以我安装了“Wp-control”插件来检查cron-evens。
通常,“下次运行”将显示未来的时间,但在我的情况下,它显示的是时间in the past 大约6小时前。
我试着禁用所有插件,重新安装Wordpress,清理数据库,重新启动服务器,问题仍然存在。
重新启动服务器后,我发现这是在cron作业运行之后发生的,因此每个cron作业都不会再运行一次,因为下次运行总是在过去!
奇怪的是,在同一台服务器上还有另外4个Wordpress实例,所有5个站点都共享相同的php7.4和MySQL,但他们的核心工作正常。
我已经检查了日期-时间设置,我还尝试增加php“max\\u children”和“start\\u server”的数量,因为一些谷歌结果表示这可能是php内存相关的问题,但仍然无法解决这个问题。
请帮助我,如何调试这样的cron作业问题以及如何解决它?
感谢您的关注!
SO网友:Tom J Nowell
过去的Cron作业是尚未有机会运行的Cron作业。
很少有访问者,除非您的系统有一个系统级cron,该cron配置为以可预测的时间间隔触发WP cron,否则您将无法使用WP cron进行精确计时。
这是因为当用户以非阻塞的自我请求访问时,将触发WP Cronwp-cron.php
, 因此,如果没有人访问您的站点,则无法运行cron作业。
WP Cron可能已关闭WP_CRON
设置为false
在里面wp-config.php
? 这在依赖于通过系统cron手动触发cron的站点上很常见。
要么重新启用它,要么修复打算手动触发WP cron的系统cron
PHP错误可能是下一个cron作业到期时也会导致致命错误,导致其无法完成并阻塞队列。检查错误日志。
非常大的积压工作/作业
通常WP Cron只能运行很短的一段时间,然后才会进入阻止网页永远加载的相同时间限制。同样,它也会有相同的内存限制。
因此,如果您的站点有大量作业,它可能无法及时处理所有作业。同样,自定义作业可能需要很长时间,而且没有足够的时间来完成。通常,这将在PHP错误日志中显示为时间限制或内存限制错误
主要站点错误,因为WP Cron是在页面加载的最后由非阻塞请求触发的,如果您的页面在最后崩溃/中断,它可能没有机会发出请求。如果这种情况发生在页脚之后,您可能不会注意到这种情况