解决 WordPress 站点健康中的“一个计划事件已失败”提示

2021年5月17日

  在 WordPress 中,有一个进程用来在指定的时间周期或者将来的某个时间点运行特定的任务(例如文章的定时发布功能),这个功能 WordPress 是通过 WP-Cron 实现的。

  但是,它只能在用户发起请求时检查定时任务。这就导致在没有用户访问时定时任务就得不到执行,有用户访问时,又可能因为定时任务正在执行而导致网站响应很慢甚至超时。

  因此可以禁用掉 WP-Cron 而通过 crontab 来定时执行任务。

  操作方法为:

  1.修改 WordPress 根目录的 wp-config.php 文件,在末尾添加以下代码并保存

//禁用 WP-Cron
define('DISABLE_WP_CRON', true);

  2.添加 crontab 任务,以下代码中的 www-data 根据自身情况替换为网站文件归属用户(如 www)

crontab -e -u www-data
#以下两种二选一即可,上面那排会把执行结果输出到邮件,而第二排添加了 >/dev/null 后不会

#我自己是每10分钟执行一次,请根据自己需求增加或减少任务执行间隔
*/10 * * * * php -f /服务器上的网站文件路径/cron.php
*/10 * * * * php -f /服务器上的网站文件路径/cron.php >/dev/null

  添加代码后按键盘上的 ESC(无提示),输入

:wq

  最后按回车键确认保存更改并退出。

  稍等一会看一下,站点健康中的“一个计划事件已失败”的提示应该就没有了。