如前文所述,WP-Cron 不会持续运行。如果某些关键任务必须按时执行,这就可能成为问题。解决方法很简单:让系统的任务调度器按照所需的间隔运行,或者在指定时间运行。最简单的做法,是使用工具向 wp-cron.php 文件发起 Web 请求。
在系统中设置好计划任务后,还需要完成一步。WordPress 仍会在每次页面加载时运行 WP-Cron;既然系统已经负责调度,这一行为便不再必要,而且会增加服务器的资源消耗。可以在 wp-config.php 中禁用 WP-Cron。打开该文件,加入以下代码:
define( 'DISABLE_WP_CRON', true );
Windows (Windows)
Windows 中基于时间运行任务的系统称为“任务计划程序”(Task Scheduler),可以从控制面板的“管理工具”打开。
任务的具体设置方式取决于服务器环境。一种方法是使用 PowerShell 和“基本任务”。创建基本任务后,可以用以下命令调用 WordPress 的 Cron 脚本。
powershell "Invoke-WebRequest http://YOUR_SITE_URL/wp-cron.php"
macOS 和 Linux (MacOS and Linux)
macOS 和 Linux 使用 cron 作为基于时间的任务调度系统。通常可在终端执行 crontab -e 来访问它。任务会以普通用户还是 root 用户运行,取决于调用该命令的用户。
cron 使用专门的任务调度语法,其中包含以下字段:
- 分钟
- 小时
- 日期(一个月中的第几天)
- 月份
- 星期(一个星期中的第几天)
- 要执行的命令
如果某个字段的值不作限制,就用星号 * 表示。例如,无论几点、哪一天或哪个月,都每隔 15 分钟运行一次命令,可以写成:
*/15 * * * * command
许多服务器都安装了 wget,它可以方便地调用 WordPress Cron 脚本。
wget --delete-after http://YOUR_SITE_URL/wp-cron.php
注意:如果不使用 –delete-after 选项,wget 会保存 HTTP GET 请求的输出。
如果希望每天午夜运行一次 WordPress Cron 脚本,可在 crontab 中加入:
0 0 * * * wget --delete-after http://YOUR_SITE_URL/wp-cron.php
著作权归原作者及来源机构所有。











暂无评论内容