与传统的系统cron不同,即将特定时间(即每小时5分钟以上的小时)调度任务,WP-Cron使用间隔来模拟系统cron。 WP-Cron被赋予了第一个任务的时间和一个间隔,以秒为单位的时间,之后重复任务。 例如,如果您计划任务从下午2:00开始,间隔时间为300秒(5分钟),则任务将首先在下午2:00运行,然后在下午2:05和之后每5分钟运行一次。
什么是 Cron
WP-Cron的工作原理是:在每个页面加载时,都会检查一个计划任务的列表,以查看需要运行的内容。计划运行的任何任务将在该页面加载期间运行。 WP-Cron不像系统cron那样持续运行;它只是在页面加载时触发。如果您将任务计划在下午2:00,并且在5:00 PM之前没有页面加载,则可能会发生计划错误。
为什么要用WP-Cron
为什么要用WP-Cron?许多托管服务是共享的,不提供对系统cron的访问,但WordPress核心和许多插件确实需要一个cron系统来执行基于时间的任务。 Cron是一个有用的工具,因此是WP-Cron的开始。虽然在特定时间可能无法运行,WP-Cron将及时完成您的任务。使用WordPress API是一种更简单的方法来设置cron任务而不是在WordPress之外。
使用系统Cron,如果时间过去,任务没有运行,它将丢失,永远不会运行。 WP-Cron将运行任务,无论它们多大。任务将坐在队列中,直到加载页面来触发它们,因此任务不会丢失。
为了简化调度任务,WordPress提供了三个默认间隔,也是添加自定义间隔的简单方法。WordPress提供的默认间隔是:
- hourly
- twicedaily
- daily
要添加自定义间隔,您可以创建一个过滤器,例如:
add_filter( 'cron_schedules', 'example_add_cron_interval' );
function example_add_cron_interval( $schedules ) {
$schedules['five_seconds'] = array(
'interval' => 5,
'display' => esc_html__( 'Every Five Seconds' ),
);
return $schedules;
}
此过滤器函数创建一个新的间隔,这将允许我们每五秒运行一次cron任务。
注意:所有时间间隔为秒。
下一节:为了让您的任务执行,您必须创建自己的自定义钩子并给该钩子执行一个函数的名称。 这是非常重要的一步。 忘记它,你的任务永远不会运行。