首页 / 插件开发手册 / 计划任务 Cron / 将WP-Cron与系统任务计划挂钩

将WP-Cron与系统任务计划挂钩

如前所述,WP-Cron不能连续运行,如果有必须按时运行的关键任务,这可能是一个问题。有一个简单的解决方案。只需将系统的任务调度程序设置为按您希望的时间间隔(或在所需的特定时间)运行即可。最简单的解决方案是使用工具向wp-cron.php文件发出web请求。

在系统上调度任务后,还有一个步骤需要完成。WordPress将在每次页面加载时继续运行WP-Cron。这不再是必要的,并且将导致服务器上额外的资源使用。可以在wp-config.php文件中禁用WP-Cron。打开wp-config.php文件进行编辑并添加以下行:

define('DISABLE_WP_CRON', true);

 

Windows

Windows将其基于时间的调度系统称为任务计划程序。可以通过控制面板中的管理工具访问它。

任务的设置方式因服务器设置而异。一种方法是使用PowerShell和基本任务。创建基本任务后,可以使用以下命令调用WordPress Cron脚本。

powershell "Invoke-WebRequest http://YOUR_SITE_URL/wp-cron.php"

 

MacOS和Linux

Mac OS X和Linux都使用cron作为基于时间的调度系统。通常使用crontab -e命令从终端进行访问。应该注意的是,任务将作为普通用户或根用户运行,具体取决于运行该命令的系统用户。

Cron有一个需要遵循的特定语法,包含以下部分:

  • Minute - 分钟
  • Hour - 小时
  • Day of month - 每月的第几天
  • Month - 月
  • Day of week - 星期几
  • Command to execute - 要执行的命令

如果命令应在不考虑其中一个时间段的情况下运行,则应使用星号(*)。例如,如果您希望每15分钟运行一次命令,而不考虑小时、日或月,则该命令如下所示:

*/15 * * * * command

许多服务器安装了wget,这是一个调用WordPress Cron脚本的简单工具。

wget --delete-after http://YOUR_SITE_URL/wp-cron.php
Note:注意:如果没有–delete after选项,wget将保存HTTP GET请求的输出。

每天午夜触发的对站点WordPress Cron的每日调用可能类似于:

0 0 * * * wget --delete-after http://YOUR_SITE_URL/wp-cron.php