将 WP-Cron 接入系统任务调度器

如前文所述,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

来源:WordPress 开发者资源 · 插件手册。

著作权归原作者及来源机构所有。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容