WordPress 的 wp-cron 是一个伪定时任务系统,它利用访问者请求触发计划任务,而非依赖服务器级别的定时任务(如 crontab)。当有用户访问网站时,wp-cron 会检查是否有任务到期,若有则执行。这种机制的优点是无需服务器配置,但缺点是依赖网站流量,若长时间无访问可能导致任务延迟甚至不执行。

另外,高访问环境下频繁检测 wp-cron.php,可能造成 CPU 飙升,影响用户体验;甚至还有潜在威胁,黑客可滥用 wp-cron.php 发起 DoS 攻击。

推荐关闭默认 WP-Cron,改为真实系统 cron 定时触发 wp-cron.php

在 wp-config.php 中加入以下代码,禁用默认机制:

define( 'DISABLE_WP_CRON', true );

使用操作系统的计划任务来定时访问 wp-cron.php:

Linux 示例(使用 crontab)

运行:crontab -e

加入以下内容(每5分钟运行一次):

*/5 * * * * curl -s https://yourdomain.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Windows 示例(任务计划程序)

创建一个计划任务,每 5 分钟执行:

wget https://yourdomain.com/wp-cron.php?doing_wp_cron