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